专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Access

spring-security当资源急需的角色为空时不进决策管理器(AccessDecisionManager)或不进投票器

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
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);  
            }  
        }  
                    
    }

   

 在加载资源的需要的角色时,如果资源需要的角色是空的,给他配一个超级管理员,

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: