spring-security当资源需要的角色为空时不进决策管理器(AccessDecisionManager)或不进投票器
spring security 中文官方文档
http://www.mossle.com/docs/springsecurity3/html/springsecurity.html
spring security 安全权限管理手册
http://www.mossle.com/docs/auth/html/
?
匿名角色:ROLE_ANONYMOUS
?
当资源需要的角色为空时不进决策管理器(AccessDecisionManager)或不进投票器
?
spring-security 是看访问受控资源需要哪些角色,再看访问者有没有这些角色中的一个,如果有,可以访问。如果没有,不可以访问。
有一个问题是,受控资源要是没有配置可以访问的角色,那么它就不判断了,都可以访问,
我的理解是这种资源谁都不可以访问,
要想实现这种效果,可以用如下方法,
?
//加载所有资源与权限的关系 private void loadResourceDefine() { if(resourceMap == null) { resourceMap = new HashMap<String, Collection<ConfigAttribute>>(); List<Resources> resources = this.resourcesDao.findAll(); for (Resources resource : resources) { //以权限名封装为Spring的security Object Collection<ConfigAttribute> configAttributes = new ArrayList<ConfigAttribute>(); List<Role> roles = resourcesDao.getRolesByResouce(resource); ConfigAttribute configAttribute; if(roles.size()==0){ configAttribute = new SecurityConfig("supervisor"); //超级管理员 //configAttribute = new SecurityConfig("ROLE_NO_USER"); //没有人可以访问 configAttributes.add(configAttribute); } else {log.info("{");for(Role role : roles){log.info(role.getName());configAttribute = new SecurityConfig(role.getName());configAttributes.add(configAttribute);}log.info("}"); } resourceMap.put(resource.getUrl(), configAttributes); } } }
???
?在加载资源的需要的角色时,如果资源需要的角色是空的,给他配一个超级管理员,