public boolean supports(ConfigAttribute attribute) { if ("DENY_FOR_SURE".equals(attribute.getAttribute())) { return true; } else { return false; } }
@Override public void decide( Authentication authentication, Object object, Collection<ConfigAttribute> attributes) throws AccessDeniedException, InsufficientAuthenticationException { if (attributes == null || attributes.isEmpty()) { return; } StringBuilder builder = new StringBuilder(); for (ConfigAttribute attribute : attributes) { builder.append(attribute.getAttribute()).append(" "); } this.logger.debug("检查权限:" + builder.toString()); if (authentication == null) { this.logger.warn("访问受限:" + builder.toString()); throw new AccessDeniedException("访问受限:" + builder.toString()); } // 所请求的资源拥有的权限(一个资源对多个权限) Iterator<ConfigAttribute> iterator = attributes.iterator(); while (iterator.hasNext()) { ConfigAttribute configAttribute = iterator.next(); // 访问所请求资源所需要的权限 String requestURL = configAttribute.getAttribute(); // 如果未定义的URL,所有登录用户默认拥有权限 if (!this.privilegeProvider.isPrivilegeDefined(requestURL)) { this.logger.debug("未定义权限的URL,默认所有登录用户拥有访问权限:" + builder.toString()); return; } // 用户所拥有的权限authentication for (GrantedAuthority ga : authentication.getAuthorities()) { if (requestURL.equals(ga.getAuthority())) { return; } } } // 没有权限 this.logger.warn("访问受限:" + builder.toString()); throw new AccessDeniedException("访问受限:" + builder.toString()); }
public void decide( Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException { if (configAttributes == null) { return; } // 所请求的资源拥有的权限(一个资源对多个权限) Iterator<ConfigAttribute> iterator = configAttributes.iterator(); while (iterator.hasNext()) { ConfigAttribute configAttribute = iterator.next(); // 访问所请求资源所需要的权限 String needPermission = configAttribute.getAttribute(); // 用户所拥有的权限authentication for (GrantedAuthority ga : authentication.getAuthorities()) { if (needPermission.equals(ga.getAuthority())) { return; } } } // 没有权限 throw new AccessDeniedException(" 没有权限访问! "); }