Shiro的认证注解处理是有内定的处理顺序的,如果有个多个注解的话,前面的通过了会继续检查后面的,若不通过则直接返回
RequiresRoles
RequiresPermissions
RequiresAuthentication
RequiresUser
RequiresGuest
@RequestMapping(value="icons", method = RequestMethod.GET)
//属于T1角色可以访问
@RequiresRoles(“T1")
//属于T1并且属于T2角色可以访问
@RequiresRoles("T1","T2")
//属于T1或者T2角色可以访问
@RequiresRoles(value={"T1","T2"},logical = Logical.OR)
public String icons(){
return "modules/sys/icons";
}
RequiresPermissions和RequiresRoles类似,只要改掉名称就行。
在jsp页面使用
//这个是多个角色判断,符合T1角色或者T2角色可以在网页中显示 <a href="icons">
<shiro:hasAnyRoles name="T1,T2">
<a href="icons">
</shiro:hasAnyRoles >
//这个是单角色的判断,只有符合角色为T1才可以再网页特显示<a href="icons">
<shiro:hasRole name="T1">
<a href="icons">
</shiro:hasRole>
可以配合上面控制器一起使用:
当继承AuthorizingRealm重写Realm方法,必须在只有在页面中使用类似的:
<shiro:hasRole name="T1"></shiro:hasRole>
或者
<shiro:hasAnyRoles name="T1,T2"></shiro:hasAnyRoles >
才可以触发授权的调用Realm方法里的授权
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
....................................
....................................
....................................
....................................
return XXX;
}