shiro之roles实现or关系的角色过滤
来源:互联网 发布:javascript json类型 编辑:程序博客网 时间:2024/05/19 04:29
个人主页,欢迎来访
原文链接
roles参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,每个参数通过才算通过,相当于hasAllRoles()
方法。shiro的角色过滤是and的关系。
而最近根据项目需求,要求订阅号管理模块,多个角色都可以进行管理,角色的过滤非and关系而是or的关系,applicationContext.xml
中roles[“管理员”,”订阅号”]不能实现或者关系的角色过滤,需要自定义继承AuthorizationFilter
的Filter。
CustomRolesAuthorizationFilter
import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import org.apache.shiro.subject.Subject;import org.apache.shiro.web.filter.authz.AuthorizationFilter;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(int i=0;i<rolesArray.length;i++) { if(subject.hasRole(rolesArray[i])) { return true; } } return false; }}
applicationContext.xml
<!--自定义的filter--><bean id="roleOrFilter" class="com.city.login.CustomRolesAuthorizationFilter"> </bean><bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean" depends-on="roleOrFilter"> <!-- securityManager --> <property name="securityManager" ref="securityManager" /> <!-- 登录路径 --> <property name="loginUrl" value="/login.jsp" /> <!-- 登录成功后跳转路径 --> <property name="successUrl" value="/index.jsp" /> <!-- 授权失败跳转路径 --> <property name="unauthorizedUrl" value="/login.jsp" /> <property name="filters"> <util:map> <entry key="authc" value-ref="formAuthenticationFilter" /> <entry key="sysUser" value-ref="sysUserFilter" /> <entry key="kickout" value-ref="kickoutSessionControlFilter" /> <entry key="roleOrFilter" value-ref="roleOrFilter"/> </util:map> </property> <!-- 过滤链定义 --> <property name="filterChainDefinitions"> <value> /login.jsp = anon /logout = logout <!-- authc表示需要认证的服务 --> /rest/credit/** = authc /rest/Uploadinfo/** = authc /userManager.jsp = kickout,roles["管理员"] /subscribe.jsp = kickout,roleOrFilter["订阅号","管理员"] /lost.jsp = kickout,authc,roles["失物招领"] /*.jsp = kickout,authc </value> </property></bean>
这样,roleOrFilter
就可以实现or的关系,即订阅号角色和管理员角色都可以访问subscribe.jsp
页面。
阅读全文
0 0
- shiro之roles实现or关系的角色过滤
- spring-shiro实现角色(roles)自定义Filter----配置多个角色的或关系
- shiro角色( roles)自定义Filter----同一个URL配置多个角色的或关系
- shiro自定义过滤器,实现角色或关系
- shiro实现基于角色的权限授权
- 项目经理的角色(Roles of Project Manager)
- 项目经理的角色(Roles of Project Manager)
- 项目经理的角色(Roles of Project Manager)
- 项目经理的角色(Roles of Project Manager)
- WordPress的角色(Roles)特点
- 利用net本身的角色类生成角色(Roles)
- shiro之权限过滤
- Avalon phoenix文档之开发角色(Roles)
- shiro配置filterchaindefinitions实现多角色判定方法的重写
- 创建和管理角色(Roles)
- Ansible角色定制—roles
- springboot+shiro+mybatis实现角色权限控制
- Shiro之urls配置多个角色
- http网络请求
- Mac os Linux 下的Tomcat出现权限问题的解决办法【Permission denied】
- Bootstrap Checks 抽样检查:
- 【0015】navicat中把excel导入表
- [v9] v9站群模式下,子站点栏目和文章ur动态时l域名错误显示为主站链接的解决办法
- shiro之roles实现or关系的角色过滤
- jquery中attr和prop的区别
- 用LDA处理文本(Python)
- Leftmost Digit
- float double精度和取值范围
- App 优化(三)未完成
- java多线程之并行和并发
- sublime安装svn提交
- ztree随笔