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);
}
}
}
在加载资源的需要的角色时,如果资源需要的角色是空的,给他配一个超级管理员,