shiro自定义realm处理授权,实现不同角色访问不同资源。
权限管理6大步
菜单可见和不可见:
1、不同角色看不同菜单的,表设计思路;
2、不同角色看不同菜单的,表修改思路;
资源可访问和不可访问:
3、shiro,登录后才能访问特定资源;
4、shiro,登录后不同角色可以访问不同资源;
5、shiro,登录后不同角色可以访问同一个资源里面的不同方法;
6、shiro,登录后不同角色可以访问同一个资源同一个方法的不同部分;
我们继续介绍不同角色针对管理系统资源访问的权限(资源可访问和不可访问)。
出现的问题
登录了之后,可以访问任意action,这肯定不行,我们应该是不同角色访问不同action。也就是达到更细化的授权效果。
实现步骤
1. 配置applicationContext_shiro.xml
2. 自定义AuthorizationFilter(授权过滤器)
默认情况下
通过自定义AuthorizationFilter修改为只要具备一个权限即可访问资源:
3. 在自定义Realm类中处理授权
需要动态添加权限,根据数据库内容动态添加权限
比如,假如“sunwukong”去登录,将动态添加如下内容:
那么他将可以访问具有“采购管理”、“采购订单查询”、“我的采购订单”、“采购审核”、“采购确认”、“采购入库”对应的资源。
补充
1. role授权方式
除了权限授权方式,还可以有角色(role)授权方式,参考:
shiro角色(roles)自定义Filter----同一个URL配置多个角色的或关系
2. 注解或jsp使用授权
还可以通过注解或者jsp标签使用授权,参考:
Shiro基础知识03----shiro授权(编程式授权),Permission详解,授权流程(zz)
3. 自定义过滤链
除了在applicationContext_shiro.xml配置过滤链外,还可以自定义过滤链。
a)创建FilterChainDefinitionMapFactoryBean
b)在applicationContext.xml中配置