shiro多角色访问同一个url
2016-04-27 18:52
260 查看
shiro如何控制一个url多个角色都可以访问
/admin/** = roles[admin,partner] 这样写必须同时拥有两个角色才能访问
我们可以自定义角色验证标签。
1、首先继承RolesAuthorizationFilter,覆写isAccessAllowed方法
public class AnyRolesAuthorizationFilter extends RolesAuthorizationFilter { @Override public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException { final Subject subject = getSubject(request, response); final String[] rolesArray = (String[]) mappedValue; if (rolesArray == null || rolesArray.length == 0) { // no roles specified, so nothing to check - allow access. return true; } for (String roleName : rolesArray) { if (subject.hasRole(roleName)) { return true; } } return false; } }
2、注册bean
<bean id="anyRolesAuthorizationFilter" class="com.rwy.spider.service.AnyRolesAuthorizationFilter"/>
3、声明自定义标签并使用
<!-- Shiro Filter --> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager" /> <property name="loginUrl" value="/login" /> <property name="successUrl" value="/" /> <!-- 声明自定义标签 hasAnyRoles--> <property name="filters"> <map> <entry key="hasAnyRoles" value-ref="anyRolesAuthorizationFilter"/> </map> </property> <property name="filterChainDefinitions"> <value> /login = anon /logout = logout /static/** = anon /admin/** = roles[admin] /system/** = hasAnyRoles[admin,partner] /** = authc </value> </property> </bean>
这样,admin、partner这两个角色就都可以访问/system路径下的url了
相关文章推荐
- spark资料收集
- SQL语法随笔
- 【渲染】解决三维出图黑白边缘溢出问题:直通(STRAIGHT)与预乘(PREMULT)ALPHA剖析
- leetcode——173——Binary Search Tree Iterator
- 恋恋加密算法解析
- JS 字符串截取
- HDOJ 2097-Sky数【进制转换】
- makefile 标准模板
- Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系
- 浅谈Solr和ElasticSearch建索引性能优化策略
- BLOB二进制大数据
- POJ 3767 I Wanna Go Home(最短路/Floyd)
- 存储过程详解1
- 文章标题
- APP创意IDEA记录
- cf273C. Primes on Interval【二分】
- PAT-B 1006. 换个格式输出整数
- Css简介
- Java 设计模式- 外观模式
- 为什么在重写equals方法时还必须重写hashcode方法