我正在尝试为 Apache Shiro 创建一个简单的授权领域以进行测试:
公共类 MyAuthRealm 扩展 AuthorizingRealm { @覆盖 受保护的 AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { SimpleAuthorizationInfo sai = new SimpleAuthorizationInfo(); sai.addRole("kota"); sai.addStringPermission("koko:*:view"); 返回赛; } @覆盖 protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { 返回空值; } }
如您所见,它并不关心用户是谁——它只返回一个角色和一个特定的权限。
现在,我正在尝试在以下代码段中对其进行测试:
if(SecurityUtils.getSubject().hasRole("kota")) { out.write("kota"); } if(SecurityUtils.getSubject().hasRole("kota2")) { out.write("kota2"); } if(SecurityUtils.getSubject().isPermitted("koko:toto:view")) { out.write("koko"); } if(SecurityUtils.getSubject().isPermitted("koko2:toto:view")) { out.write("koko2"); }
我收到以下输出
kota koko koko2
:(
所以看来角色配置正确(因为用户只有角色kota),但是权限不行(为什么要打印koko2???)!!!
谁能向我解释我做错了什么?
蒂亚!