山西太原建站哪家弿,苏州注册公司可以用住宅地址吗,建筑工程网线接头规范,wordpress lapashiro默认的roles过滤#xff0c;是与的关系#xff0c;就是你的用户得有roles对应的所有角色#xff0c;才算有权限。 但是实际开发过程中#xff0c;更多的是或的需求#xff0c;只要用户满足roles中的一个角色#xff0c;就算有权限。 所以就涉及到重写过滤器roles是与的关系就是你的用户得有roles对应的所有角色才算有权限。 但是实际开发过程中更多的是或的需求只要用户满足roles中的一个角色就算有权限。 所以就涉及到重写过滤器roles如下
/*** 自定义过滤器覆盖默认且转或*/
public class RoleFilter extends AuthorizationFilter {Overrideprotected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object mappedValue) throws Exception {String[] arra (String[]) mappedValue;if (arra null || arra.length 0) {//没有角色限制有权限访问return true;}Subject subject getSubject(servletRequest, servletResponse);for (String role : arra) {if (subject.hasRole(role)) {//或return true;}}return false;}
}写完这个类再将他放在配置类的ShiroFilterFactoryBean的Filters中即可如下 Beanpublic ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {ShiroFilterFactoryBean shiroFilterFactoryBean new ShiroFilterFactoryBean();shiroFilterFactoryBean.setSecurityManager(securityManager);MapString, Filter filtersMap new LinkedHashMapString, Filter();//自定义拦截器filtersMap.put(roles, roleFilter());shiroFilterFactoryBean.setFilters(filtersMap);MapString, String filterChainDefinitionMap Maps.newLinkedHashMap();filterChainDefinitionMap.put(/user/**,roles[user,leader]);//其他资源权限shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);return shiroFilterFactoryBean;