第一种:URL 级别粗粒度权限控制
配置 web.xml 的 shiroFilter 拦截 /*
在 spring 的 applicationContext*.xml 配置文件中配置同名 bean,配置 filterChainDefinitions 拦截控制规则
xxx.html* = anon (未登录可以访问)
xxx.html* =authc (必须登录才能访问 )
xxx.html* = perms[权限] (需要特定权限才能访问)
xxx.html* = roles[角色] (需要特定角色才能访问 )
第二种: 方法级别细粒度权限控制
在 spring 的 applicationContext*.xml 配置 spring aop 对 spring 管理 bean 对象开启 shiro 注解支持
@RequiresPermissions(权限) 需要特定权限才能访问
@RequiresRoles(角色) 需要特定角色才能访问
@RequiresAuthentication 需要认证才能访问
第三种:通过 shiro 自定义标签,实现页面元素显示控制
登录后才能访问 <shiro:authenticted>
需要特定权限才能访问 <shiro:hasPermission name="xxx">
需要特定角色才能访问 <shiro:hasRole name="xxx">
第四种:在程序中通过代码 判断用户是否具有指定权限( 不太常用 )
1.角色授权实现
Subject currentUser = SecurityUtils.getSubject();
if(currentUser.hasRole("xxx")){
//填写拥有该角色的处理逻辑
}else{
//无该角色的处理逻辑
}
2.资源授权实现
if(currentUser.isPermitted("permission:xxx")){
//填写拥有该权限的处理逻辑
}else{
//无该权限的处理逻辑
}