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,那么就相当于有其他所有的权限
相关推荐
在本文中,我们将深入探讨Spring Security如何实现权限控制,并通过一个名为"springsecuritydemo4"的示例项目来理解其核心概念。 首先,Spring Security 的权限控制主要涉及以下几个关键组件: 1. **认证...
这个“Spring Security 权限控制中文API”很可能是对Spring Security框架的中文文档或指南,帮助开发者理解和使用权限控制功能。 Spring Security的核心在于保护资源、进行身份验证(Authentication)和授权...
Spring Security如何使用URL地址进行权限控制 Spring Security是一个功能强大且广泛应用的Java安全框架,它提供了许多功能,包括身份验证、授权、加密等。其中,权限控制是Spring Security的一个重要组件,它允许...
总的来说,这个项目为学习者提供了一个实际的、完整的SpringBoot集成Spring Security的示例,通过它,你可以了解如何配置和使用Spring Security进行权限控制,同时掌握如何将数据库集成到Spring Boot应用中。...
本项目“SpringSecurity+OAuth2+JWT分布式权限控制”旨在提供一个完整的解决方案,帮助开发者构建安全的、基于微服务的分布式应用程序。 Spring Security 是一个强大的和高度可定制的身份验证和授权框架,适用于...
在这个项目中,这三者协同工作,Spring Security 负责后台的权限控制,Spring MVC 处理业务逻辑和数据交互,而 jQuery Easy-UI 则提供了用户友好的界面。理解这些知识点对于开发和维护这样一个用户权限管理项目至关...
本篇文章将深入探讨如何在Spring 3中整合Spring Security来实现权限控制,以保护你的应用程序免受非法访问。 首先,我们需要理解Spring Security的核心概念。它主要由四个部分组成:认证(Authentication)、授权...
本文将深入探讨如何在Spring Boot项目中利用Spring Security进行权限控制,并结合BCrypt加密技术来增强用户密码的安全性,同时也会提及如何使用Thymeleaf模板引擎来呈现动态安全的界面。 首先,我们需要理解Spring ...
Spring Security 是一个基于 Java 的安全框架,旨在提供身份验证、授权和访问控制等功能。下面是 Spring Security 的主要知识点: 一、身份验证(Authentication) 身份验证是指对用户身份的验证,以确保用户的...
通过分析这个项目,你可以看到实际应用中的权限控制是如何工作的,包括如何配置安全上下文、定义URL访问规则、实现用户认证和授权逻辑等。 总之,SpringSecurity为开发者提供了一套强大且灵活的工具,帮助他们构建...
《Grails + Spring Security 权限控制》 在Web应用开发中,权限控制是不可或缺的一环,它确保了用户只能访问他们被授权的功能和数据。本文将深入探讨如何在Grails框架中集成Spring Security,实现高效且灵活的权限...
Spring Security 是一个强大的安全框架,用于为Java应用提供安全控制。在传统的权限管理中,权限配置通常硬编码在应用程序中,这使得权限调整变得困难,每次变动都需要重新部署应用。然而,通过动态授权,我们可以将...
为了实现更细粒度的权限控制,Spring Security提供了一个`PermissionEvaluator`接口。你可以自定义实现来处理业务逻辑,判断用户是否有特定的权限。同时,`@PreAuthorize`和`@PostAuthorize`注解可以接受SpEL...
后端使用SpringBoot框架进行业务逻辑开发,利用Spring Security实现权限控制。数据库采用MySQL进行数据存储,使用MyBatis进行数据访问。 权限控制模块设计包括用户、角色和权限三个主要模块。用户模块用于管理用户...
在"spring security权限管理"这个主题中,我们将深入探讨如何利用Spring Security来实现复杂而灵活的权限控制。 首先,`MyUser.java`可能是自定义的用户实体类,它通常会包含用户的基本信息,如用户名、密码、角色...
- **springsecurity-sample**:这个示例项目可能包含了从创建用户、角色到实现登录、权限控制的完整流程。你可以通过它学习如何配置Spring Security XML或Java配置,如何编写自定义的认证和授权逻辑,以及如何在...
- 说明如何针对特定Bean的方法进行权限控制。 - **19.3 使用annotation控制方法权限** - **19.3.1 使用@Secured** - 介绍如何使用`@Secured`注解控制方法权限。 - **19.3.2 使用JSR250** - 分析如何使用JSR250...
它允许我们动态地在HTML中插入数据,使得权限控制更加直观。例如,我们可以在页面上使用Thymeleaf表达式`th:if`来隐藏或显示某些元素,取决于用户是否有相应的权限。如`${#security.hasRole('ADMIN')}">管理员区域...
- Spring Security 使用一种强大的表达式语言(EL),如`hasRole('ROLE_ADMIN')`,用于在访问控制列表中指定授权规则。 7. **OAuth2集成**: - Spring Security 可以与OAuth2框架集成,提供第三方服务的认证和...
总之,《Spring Security安全权限管理手册》为初学者提供了一个全面了解Spring Security的平台,通过掌握其核心概念、架构原理和实践应用,开发者可以有效地在Java企业级应用中实施安全性和访问控制,保障系统的安全...