`
确实比较男
  • 浏览: 115619 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring security 访问权限控制

阅读更多


GrantedAuthority

用户在认证成功后查询处理用户拥有的所有权限,Authentication中存储了用户的所有权限,spring-security的权限接口GrantedAuthority

public interface GrantedAuthority extends Serializable {
	//字符串代表一个权限
    String getAuthority();
}

 

AccessDecisionManager

权限校验器Manager,判断用户是否用权限

public interface AccessDecisionManager {
	//authentication  : 用户认证后的对象
	//object : 受保护的资源对象
	// configAttributes : 访问资源需要的权限
   	void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException;
 	boolean supports(ConfigAttribute attribute);
    boolean supports(Class<?> clazz);
}

 

decide : 判断用户是否具有权限,最终的是让AccessDecisionVoter实现校验,可以配置多个AccessDecisionVoter;若用户没有权限,抛出AccessDeniedException

 

supports(ConfigAttribute): 在启动的时候被AbstractSecurityInterceptor调用,判断AccessDecisionManager是否支持所有的ConfigAttribute

 

supports(Class) : FilterSecurityInterceptor调用,判断AccessDecisionManager是否支持受保护的对象

 

AccessDecisionVoter

 

public interface AccessDecisionVoter<S> {
    int ACCESS_GRANTED = 1;
    int ACCESS_ABSTAIN = 0;
int ACCESS_DENIED = -1;

    boolean supports(ConfigAttribute attribute);
    boolean supports(Class<?> clazz);
    int vote(Authentication authentication, S object, Collection<ConfigAttribute> attributes);
}

  vote: 返回一个int, AccessDecisionVoter中定义的三个静态变量ACCESS_ABSTAIN, ACCESS_DENIED ,ACCESS_GRANTED

 

分层的角色权限

 Spring-security 支持把权限划分层次,高层次包含低层次的权限,比如ROLE_AMDIN,ROLE_USER两个权限,若用户拥有了ROLE_AMDIN权限,那么相当于有了ROLE_USER权限。

例子:

这个一个权限结构:ROLE_ADMIN => ROLE_STAFF => ROLE_USER => ROLE_GUEST

 

<bean id="roleVoter" class="org.springframework.security.access.vote.RoleHierarchyVoter">
    <constructor-arg ref="roleHierarchy" />
</bean>
<bean id="roleHierarchy"
        class="org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl">
    <property name="hierarchy">
        <value>
            ROLE_ADMIN > ROLE_STAFF
            ROLE_STAFF > ROLE_USER
            ROLE_USER > ROLE_GUEST
        </value>
    </property>
</bean>

  

若用户被授权了ADMIN,那么就相当于有其他所有的权限

 

 

 

 

  • 大小: 49.5 KB
1
0
分享到:
评论

相关推荐

    spring security权限控制

    在本文中,我们将深入探讨Spring Security如何实现权限控制,并通过一个名为"springsecuritydemo4"的示例项目来理解其核心概念。 首先,Spring Security 的权限控制主要涉及以下几个关键组件: 1. **认证...

    Spring Security 权限控制中文API

    这个“Spring Security 权限控制中文API”很可能是对Spring Security框架的中文文档或指南,帮助开发者理解和使用权限控制功能。 Spring Security的核心在于保护资源、进行身份验证(Authentication)和授权...

    Spring Security如何使用URL地址进行权限控制

    Spring Security如何使用URL地址进行权限控制 Spring Security是一个功能强大且广泛应用的Java安全框架,它提供了许多功能,包括身份验证、授权、加密等。其中,权限控制是Spring Security的一个重要组件,它允许...

    SpringBoot集成Spring Security实现权限控制【完整源码+数据库】

    总的来说,这个项目为学习者提供了一个实际的、完整的SpringBoot集成Spring Security的示例,通过它,你可以了解如何配置和使用Spring Security进行权限控制,同时掌握如何将数据库集成到Spring Boot应用中。...

    SpringSecurity+OAuth2+JWT分布式权限控制.zip

    本项目“SpringSecurity+OAuth2+JWT分布式权限控制”旨在提供一个完整的解决方案,帮助开发者构建安全的、基于微服务的分布式应用程序。 Spring Security 是一个强大的和高度可定制的身份验证和授权框架,适用于...

    spring security用户权限项目

    在这个项目中,这三者协同工作,Spring Security 负责后台的权限控制,Spring MVC 处理业务逻辑和数据交互,而 jQuery Easy-UI 则提供了用户友好的界面。理解这些知识点对于开发和维护这样一个用户权限管理项目至关...

    spring3中增加 spring security控制权限

    本篇文章将深入探讨如何在Spring 3中整合Spring Security来实现权限控制,以保护你的应用程序免受非法访问。 首先,我们需要理解Spring Security的核心概念。它主要由四个部分组成:认证(Authentication)、授权...

    在Spring Boot中使用Spring Security实现权限控制

    本文将深入探讨如何在Spring Boot项目中利用Spring Security进行权限控制,并结合BCrypt加密技术来增强用户密码的安全性,同时也会提及如何使用Thymeleaf模板引擎来呈现动态安全的界面。 首先,我们需要理解Spring ...

    Spring Security in Action

    Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户身份的验证,以确保用户的...

    SpringSecurity权限管理

    通过分析这个项目,你可以看到实际应用中的权限控制是如何工作的,包括如何配置安全上下文、定义URL访问规则、实现用户认证和授权逻辑等。 总之,SpringSecurity为开发者提供了一套强大且灵活的工具,帮助他们构建...

    Grails + Spring Security 权限控制

    《Grails + Spring Security 权限控制》 在Web应用开发中,权限控制是不可或缺的一环,它确保了用户只能访问他们被授权的功能和数据。本文将深入探讨如何在Grails框架中集成Spring Security,实现高效且灵活的权限...

    spring security实现动态授权

    Spring Security 是一个强大的安全框架,用于为Java应用提供安全控制。在传统的权限管理中,权限配置通常硬编码在应用程序中,这使得权限调整变得困难,每次变动都需要重新部署应用。然而,通过动态授权,我们可以将...

    springsecurity角色和权限

    为了实现更细粒度的权限控制,Spring Security提供了一个`PermissionEvaluator`接口。你可以自定义实现来处理业务逻辑,判断用户是否有特定的权限。同时,`@PreAuthorize`和`@PostAuthorize`注解可以接受SpEL...

    通用权限管理系统+springboot+mybatis plus+spring security+jwt+redis+mysql

    后端使用SpringBoot框架进行业务逻辑开发,利用Spring Security实现权限控制。数据库采用MySQL进行数据存储,使用MyBatis进行数据访问。 权限控制模块设计包括用户、角色和权限三个主要模块。用户模块用于管理用户...

    spring security权限管理

    在"spring security权限管理"这个主题中,我们将深入探讨如何利用Spring Security来实现复杂而灵活的权限控制。 首先,`MyUser.java`可能是自定义的用户实体类,它通常会包含用户的基本信息,如用户名、密码、角色...

    spring security权限管理开发手册及实例.rar

    - **springsecurity-sample**:这个示例项目可能包含了从创建用户、角色到实现登录、权限控制的完整流程。你可以通过它学习如何配置Spring Security XML或Java配置,如何编写自定义的认证和授权逻辑,以及如何在...

    Spring Security 安全权限管理手册.pdf

    - 说明如何针对特定Bean的方法进行权限控制。 - **19.3 使用annotation控制方法权限** - **19.3.1 使用@Secured** - 介绍如何使用`@Secured`注解控制方法权限。 - **19.3.2 使用JSR250** - 分析如何使用JSR250...

    Spring Security 资料合集

    - Spring Security 使用一种强大的表达式语言(EL),如`hasRole('ROLE_ADMIN')`,用于在访问控制列表中指定授权规则。 7. **OAuth2集成**: - Spring Security 可以与OAuth2框架集成,提供第三方服务的认证和...

    spring boot +spring security+thymeleaf实现权限

    它允许我们动态地在HTML中插入数据,使得权限控制更加直观。例如,我们可以在页面上使用Thymeleaf表达式`th:if`来隐藏或显示某些元素,取决于用户是否有相应的权限。如`${#security.hasRole('ADMIN')}"&gt;管理员区域...

    Spring Security 安全权限管理手册(最新)

    总之,《Spring Security安全权限管理手册》为初学者提供了一个全面了解Spring Security的平台,通过掌握其核心概念、架构原理和实践应用,开发者可以有效地在Java企业级应用中实施安全性和访问控制,保障系统的安全...

Global site tag (gtag.js) - Google Analytics