01. shiro源码解读(一) | 您所在的位置:网站首页 › securitymanager有什么用 › 01. shiro源码解读(一) |
1. DefaultSecurityManager [类]
1.1 DefaultSecurityManager 的继承关系
realm英文原意:领域、场所 Realm即领域,相当于datasource数据源,securityManager进行安全认证需要通过Realm获取用户权限数据,比如:如果用户身份数据在数据库那么realm就需要从数据库获取用户身份信息。 注意:不要把realm理解成只是从数据源取数据,在realm中还有认证授权校验的相关的代码。 设置单个realm public void setRealm(Realm realm) { if (realm == null) { throw new IllegalArgumentException("Realm argument cannot be null"); } Collection realms = new ArrayList(1); realms.add(realm); setRealms(realms); } 复制代码setRealm(Realm realm) 的参数列表里需要一个Realm 此Realm 是一个接口。
这个有参构造方法,一般是将我们shirio.ini文件设置进去。 public IniRealm(String resourcePath) { this(); Ini ini = Ini.fromResourcePath(resourcePath); this.ini = ini; this.resourcePath = resourcePath; processDefinitions(ini); } 复制代码DefaultSecurityManager可以设置setRealm // 1. 初始化shiro的安全管理器 DefaultSecurityManager defaultSecurityManager = new DefaultSecurityManager(); // 2. 设置用户的权限信息到安全管理器 Realm realm = new IniRealm("classpath:shirio.ini"); defaultSecurityManager.setRealm(realm); 复制代码但是看看继承关系
setRealm() 方法是类 RealmSecurityManager中的方法,为什么能调用呢? 因为DefaultSecurityManager 继承了RealmSecurityManager,就可以调用RealmSecurityManager类中的方法。 UsernamePasswordToken在创建token令牌,记录用户认证的身份和凭证即账号和密码的时候,会用到UsernamePasswordToken类,它有一个接口AuthenticationToken,我们一般都是 AuthenticationToken usernamePasswordToken = new UsernamePasswordToken(username,password); 复制代码 |
CopyRight 2018-2019 实验室设备网 版权所有 |