`
happyqing
  • 浏览: 3198069 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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);  
            }  
        }  
                    
    }

   

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

分享到:
评论

相关推荐

    spring-security-core-2.0.5.RELEASE.src

    `org.springframework.security.access.vote`包下包含不同类型的投票器,如AffirmativeBased、UnanimousBased等,用于根据特定策略决定是否允许访问。 3. **SecurityContext**:存储当前用户的认证信息,通常与...

    spring-security-3.1.3.RELEASE.jar

    Spring Security的访问控制机制包括访问决策管理器(Access Decision Manager)、访问决策投票器(Access Decision Voter)和权限表达式(PermissionEvaluator)。3.1.3.RELEASE版本中的授权策略可以根据角色、URL、...

    spring-security-3.0.3 jar包( 含源码)

    - `AccessDecisionManager`:决策管理器,用于决定是否允许访问资源,可以基于投票或配置的策略进行决策。 - `AbstractAuthenticationToken`:所有认证令牌的基类,包含了认证信息。 - `...

    spring spring security2.5 jar

    Spring Security通过访问决策管理器(AccessDecisionManager)和访问决策投票器(AccessDecisionVoter)实现这一过程。开发者可以自定义权限表达式(例如,`hasRole('ROLE_ADMIN')`)并结合方法或URL安全配置进行...

    spring-security-3.1.0.RELEASE.zip

    - **AccessDecisionManager**: 决策管理器负责决定是否允许访问特定的资源,基于用户的权限和访问控制策略。 2. **身份验证机制** - **Basic Authentication**: 常见的HTTP基本认证,用户信息通过Base64编码在...

    spring-security-3.1.0.RELEASE

    2. **授权**:基于角色的访问控制(RBAC)是Spring Security授权的基础,通过配置访问决策管理器(AccessDecisionManager)和访问决策投票器(AccessDecisionVoter),可以实现细粒度的权限控制。 3. **过滤器链**...

    spring-security-3

    Spring Security 的核心组件包括 Filter Chain(过滤器链)、Authentication Manager(认证管理器)、Authorization Manager(授权管理器)和 Access Decision Manager(访问决策管理器)。这些组件共同工作,确保...

    spring-security3入门教程

    - **访问控制**:通过访问决策管理器(AccessDecisionManager)和访问决策投票器(AccessDecisionVoter),Spring Security 实现了基于角色的访问控制(RBAC)。它允许定义权限、角色和资源之间的关系。 2. **架构...

    spring-Security简单例子

    - **访问决策管理器**: 可以自定义`AccessDecisionManager`来决定如何根据投票结果决定是否允许访问。 5. **安全过滤器链** - **Filter Security Interceptor**: 处理基于URL的访问控制。 - **Concurrent ...

    spring-security-sample案例代码

    4. 授权规则:使用`@Secured`或`@PreAuthorize`等注解来控制方法级别的访问权限,或者配置访问决策管理器(AccessDecisionManager)和访问决策投票器(AccessDecisionVoter)来实现复杂的授权策略。 在案例代码中,...

    spring-security-web-3 source code

    - **AccessDecisionVoter**:了解投票器接口及其在授权决策过程中的作用,比如RoleVoter、AffirmativeBased等。 - **AuthenticationProvider**:深入研究自定义认证提供者的实现,如DaoAuthenticationProvider,它...

    spring-security-3.0.1

    Spring Security通过访问决策管理器(AccessDecisionManager)和访问决策投票器(AccessDecisionVoter)来实现这一功能。在3.0.1版本中,可以使用不同的策略,如基于角色的访问控制(RBAC)或基于权限的访问控制(PBAC)。 ...

    spring-security多个登录页面配置

    假设我们希望所有访问决策都必须得到一致同意(即所有投票器都允许访问),可以创建自己的`AccessDecisionManager`并注入到Spring Security配置中。 ```java @Bean public AccessDecisionManager ...

    spring-security-3.1.x.zip 源码下载

    - **授权(Authorization)**:通过访问决策管理器(Access Decision Manager)和访问决策投票器(Access Decision Voter)来决定用户是否有权限执行某个操作。 - **过滤器链(Filter Chain)**:Spring Security...

    Spring集成SpringSecurity依赖包

    这可以通过访问决策管理器(Access Decision Manager)和访问决策投票器(Access Decision Voter)来实现。 3. **Filter Chain(过滤器链)**:Spring Security通过一系列过滤器来处理HTTP请求,这些过滤器实现了...

    Spring Security安全权限管理手册 html

    - **AccessDecisionManager**:决定用户是否可以访问特定资源,基于投票器机制(例如,多数投票通过)。 - **SecurityContextHolder**:存储当前的认证信息,使得在整个应用中可以随时访问。 4. **安全性配置**:...

    spring-security

    4. **访问决策策略**:Spring Security支持多种访问决策策略,如多数投票、第一个投票等,可以根据应用需求选择合适的策略。 5. **安全性会话管理**:Spring Security可以管理用户的会话,防止会话固定攻击...

    spring-security源码,直接引用这个压缩文件即可

    `AccessDecisionManager`协调投票器的决策,决定是否允许访问受保护的资源。`AccessDecisionVoter`是策略接口,可以根据不同条件(如角色、权限等)投票。 5. **表达式语言**: Spring Security 支持使用Spring ...

    spring-security-3.0.5 api

    3. **权限表达式**:Spring Security 3.0.5引入了权限表达式(Permission Expressions),允许在控制器方法或视图层使用`@PreAuthorize`和`@PostAuthorize`注解,以声明式的方式定义访问规则。 4. **拦截器与过滤器...

Global site tag (gtag.js) - Google Analytics