此时我们继承 AuthorizingRealm 而不是实现 Realm 接口;推荐使用 AuthorizingRealm ,因
为:
AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) :表示获取身份验证信
息;
AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) :表示根据用户身份
获取授权信息。
这种方式的好处是当只需要身份验证时只需要获取身份验证信息而不需要获取授权信息。
对于 AuthenticationInfo 和 AuthorizationInfo 请参考其 Javadoc 获取相关接口信息。
另外我们可以使用 JdbcRealm ,需要做的操作如下:
1 、执行 sql/ shiro-init-data.sql 插入相关的权限数据;
2 、使用 shiro-jdbc-authorizer.ini 配置文件,需要设置 jdbcRealm.permissionsLookupEnabled
为 true 来开启权限查询。
此次还要注意就是不能把我们自定义的如“ +user1+10 ”配置到 INI 配置文件,即使有
IniRealm 完成,因为 IniRealm 在 new 完成后就会解析这些权限字符串,默认使用了
WildcardPermissionResolver 完成,即此处是一个设计权限,如果采用生命周期(如使用初
始化方法)的方式进行加载就可以解决我们自定义 permissionResolver 的问题