Shiro杂谈(一): SecurityManager中类的注入过程

Shiro中所有功能类都是组合进SecurityManager,由客户端进行调用运行的。

以下过程所需的配置文件:

初始化SecurityManager的时候,这些功能类按一定的结构和次序被组合进来

实例的过程分为两步,第一步是进行默认类的组合,第二步是进行配置类的组合,具体是在IniSecurityManagerFactory中进行的。

在进行第一步后,由于自己实现了Realm,因此Realm还没有被实例,而配置中没有进行身份验证策略的配置,所以框架选择了默认的AtLeastOneSuccessfulStrategy策略。

第二步,进行配置类的实例化并组合进SecurityManager

ReflectionBuilder根据ini文件中的配置进行类的实例和属性设置:

第二步执行完毕后,已经按照配置,进行了所有类的组装,结构大体上如此(由于只配置了加密部分的属性,所以还有其他部分属性是在其实例化的同时默认注入的)

如此Shiro中最重要的部分SecurityManager实例化完毕,安静的驻留在内存中,等待客户端的处理请求。

以上代码引用 pull from https://github.com/zhangkaitao/shiro-example

时间: 2024-10-25 00:27:02

Shiro杂谈(一): SecurityManager中类的注入过程的相关文章

认识Robotlegs(一)注入过程的分析

提到Robotlegs,很多人都读过一篇叫做<Robotlegs最佳实践>的教程,都知道Robotlegs是一个基于IOC的MVC微框架,其内部的注入机制有三种绑定规则(值绑定.类绑定. 单例绑定),现在我以SwiftSuspenders的视角再来分析一下注入的实现过程. SwiftSuspenders实现注入的过程大致是下面的步骤: 1)创建注入器 2)添加注入规则 3)初始化注入宿主(InjecteeClass) 4)对注入宿主进行注入 (把注入对象注入到宿主内部) 1 /**注入对象*/

Java程序员从笨鸟到菜鸟之(一百零一)sql注入攻击详解(二)sql注入过程详解

在上篇博客中我们分析了sql注入的原理,今天我们就来看一下sql注入的整体过程,也就是说如何进行sql注入,由于本人数据库和网络方面知识有限,此文章是对网上大量同类文章的分析与总结,其中有不少直接引用,参考文章太多,没有注意出处,请原作者见谅) SQL注入攻击的总体思路是: 1.发现SQL注入位置: 2.判断后台数据库类型: 3.确定XP_CMDSHELL可执行情况 4.发现WEB虚拟目录 5. 上传ASP木马: 6.得到管理员权限: 一.SQL注入漏洞的判断 一般来说,SQL注入一般存在于形如

[Shiro] tutorial 1 :SecurityManager and Subject

SecurityManager是Shiro的绝对核心,不同于java.lang.SecurityManager,每个应用程序都要有一个SecurityManager. 所以我们第一件事就是配置一个SecurityManager实例. 配置: 我们可以直接实例化SecurityManager类,Shiro的SecurityManger的实现有很多配置选项和内部组件. 可以通过文本类型的配置文件配置.Shiro提供了ini格式的配置文件. 相较于xml,ini更加易读,也无需太多依赖. 可以简单配置

Shiro遇到的SecurityManager红色警告

问题如图 需要添加一个导入 import org.apache.shiro.mgt.SecurityManager; 这样就不会报错了 原文地址:https://www.cnblogs.com/sinclairni/p/10624978.html

杂谈--一次”失败“问题处理过程

近期总有开发同事过来抱怨说有写执行超时,但是查看相关语句又没有任何问题,统计正常,执行计划合理,IO压力较低,锁也正常,正常5ms可以结束的SQL竟然超时,不可思议,但由于超时的时间和频率不固定,我们很难捕捉到超时的时间点上服务器的状态,肖磊同志明锐地发现该数据库日志日志已暴涨至200+GB,于是慢慢折腾路开始... --=========================================================== 首先出场的是肖桑,我在旁围观,当我们发现日志暴涨这么大的

sql注入(二)联合查询注入过程

注入步骤 找注入点且得到闭合字符 判断数据库类型 猜解列数,得到显示位 得到基本信息(如:数据库名.数据库版本.当前数据库名等) 得到数据库名 得到表名 得到列名 得到列值 1 1' order by 3 -- - 错误 2 1' order by 1 -- - 正确 3 1' order by 2 -- - 正确 (判断有几列,在这里有两列) 4 ? 5 ? 6 1' union select 1,2 -- - (查看回显位) 7 ? 8 1' union select user(),data

sql注入过程中后台数据库类型的三种判断方式

后台数据库类型判断: 一.通过页面返回的报错信息,一般情况下页面报错会显示是什么数据库类型,在此不多说: 二.通过各个数据库特有的数据表来判断: 1.mssql数据库 http://127.0.0.1/test.php?id=1 and (select count(*) from sysobjects)>0 and 1=1 2.access数据库 http://127.0.0.1/test.php?id=1 and (select count(*) from msysobjects)>0 an

shiro中基于注解实现的权限认证过程

授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限等等. 一.用户权限模型 为实现一个较为灵活的用户权限数据模型,通常把用户信息单独用一个实体表示,用户权限信息用两个实体表示. 用户信息用 LoginAccount 表示,最简单的用户信息可能只包含用户名 loginName 及密码 password 两个属性.实际应用中可能会包含用户是否被禁用,用户信息是否过期等信息. 用户权限信息用 Role 与 Per

将 Shiro 作为应用的权限基础 三:基于注解实现的授权认证过程

授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限等等. 一.用户权限模型 为实现一个较为灵活的用户权限数据模型,通常把用户信息单独用一个实体表示,用户权限信息用两个实体表示. 用户信息用 LoginAccount 表示,最简单的用户信息可能只包含用户名 loginName 及密码 password 两个属性.实际应用中可能会包含用户是否被禁用,用户信息是否过期等信息. 用户权限信息用 Role 与 Per