shiroFilter配置文件详解关于默认的and关系改为or
2016-09-24 20:01
465 查看
由于shiro默认对于角色授权的拦截是and关系,只有当该用户拥有配置的一个多个角色是才可通过
这显然是不够我们使用的,但是我们可以自定义一个filter实现or关系
自定义的shiroOrFilter如下
此处要注意,之前的roles要被cRole所替代,否则过滤不成功
/user/add = cRole["admin,test"]
shiro 最基本的demo 实现了权限、角色、等的管理。但没有使用本文介绍的角色问题,此demo权限更加细粒化
shiro demo https://github.com/haois/shiro-rbac-demo.git(spring
springmvc mybatis maven)
/user/add = roles["admin,test"]当该角色同时拥有这两个角色时才可进入user/add的页面中
这显然是不够我们使用的,但是我们可以自定义一个filter实现or关系
自定义的shiroOrFilter如下
/** * 自定义校验规则(or) * 只要满足其中一个角色即可了 */ public class CustomRolesAuthorizationFilter extends AuthorizationFilter { @Override protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { Subject subject = getSubject(request, response); String[] rolesArray = (String[]) mappedValue; if (rolesArray == null || rolesArray.length == 0) { return true; } for (String aRolesArray : rolesArray) { if (subject.hasRole(aRolesArray)) { return true; } } return false; } }shiro配置中这样写
<pre name="code" class="java"><!-- 因为shiro的角色控制在shiroFilter需要满足and逻辑,此处我们自定义一个满足or逻辑的--> <bean id="cRole" class="gcu.shiro.CustomRolesAuthorizationFilter" /> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean" depends-on="cRole"> <property name="loginUrl" value="/user/index"/> <property name="securityManager" ref="securityManager"/> <property name="unauthorizedUrl" value="/user/noAuthority"/> <property name="filters"> <map> <entry key="cRole" value-ref="cRole"/> </map> </property> <property name="filterChainDefinitions"> <value> /css/** = anon /font/** = anon /images/** = anon /js/** = anon /user/index = anon /user/login = anon /**/add = cRole["ADMIN,SUPER"] /**/list = cRole["ADMIN,SUPER"] /**/edit/**= cRole[SUPER] /**/del/**= cRole[SUPER] /** = authc </value> </property> </bean>
此处要注意,之前的roles要被cRole所替代,否则过滤不成功
/user/add = cRole["admin,test"]
</pre><pre code_snippet_id="1898542" snippet_file_name="blog_20160924_7_7731479" name="code" class="java">
此时只要满足一个角色就可以访问了
shiro 最基本的demo 实现了权限、角色、等的管理。但没有使用本文介绍的角色问题,此demo权限更加细粒化
shiro demo https://github.com/haois/shiro-rbac-demo.git(spring
springmvc mybatis maven)
相关文章推荐
- 关于Linux安装mysql默认配置文件位置详解
- 关于RED5——配置文件详解
- 【转】hibernate之关系配置文件详解3
- GRUB2配置详解:默认启动项,超时时间,隐藏引导菜单,配置文件详解,图形化配置
- 关于springboot的默认日志配置文件logback.xml
- 关于RED5——配置文件详解
- 关于anaconda的配置文件kickstart详解
- 关于struts2配置文件不放在默认位置
- 关于hibernate映射继承关系时独立的子类配置文件的问题
- Struts2中default.properties常量默认配置文件详解,以及修改常量方式
- 关于JSP配置文件web.xml加载顺序详解
- (转)web.config详解之在文件中配置网站默认页面
- 关于RMAN的配置信息存储和控制文件的关系
- 关于commons-configuration的 PropertiesConfiguration读配置文件时的默认分隔符
- 关于RED5——配置文件详解
- 关于JSP配置文件web.xml加载顺序详解
- 关于RED5——配置文件详解
- 关于mongorc.js文件详解
- 关于Linux安装mysql默认配置文件位置
- Redis默认配置文件redis.conf详解