package com.whyc.filter; import com.whyc.pojo.User; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.CollectionUtils; import org.apache.shiro.web.filter.authz.AuthorizationFilter; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import java.util.Set; /** * 自定义过滤规则,只需要包含某个角色,就授权 */ public class RolesOrAuthorizationFilter 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; } Set roles = CollectionUtils.asSet(rolesArray); //判断为or User user = (User) subject.getPrincipals().getPrimaryPrincipal(); for (String role :roles){ if (subject.hasRole(role)){ return true; } } return false; } }