`
确实比较男
  • 浏览: 112613 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    spring security 读取数据库权限信息

    项目自身的权限信息结合spring security 框架的实现。 本DEMO只包括从数据库读取登录认证信息,认证通过后 从数据库读取授权信息来控制用户的访问.权限元素包括 用户,角色,菜单以及这三者的关系。 本DEMO使用了...

    SpringBoot+SpringSecurity+JWT+MybatisPlus实现基于注解的权限验证

    SpringBoot+SpringSecurity+JWT+MybatisPlus实现基于注解的权限验证,可根据注解的格式不同,做到角色权限控制,角色加资源权限控制等,粒度比较细化。 @PreAuthorize("hasAnyRole('ADMIN','USER')"):具有admin或...

    SpringBoot+SpringSecurity整合(实现了登录认证和权限验证)完整案例,基于IDEA项目

    SpringBoot+SpringSecurity整合示例代码,实现了从数据库中获取信息进行登录认证和权限认证。 本项目为idea工程,请用idea2019导入(老版应该也可以)。 本项目用户信息所需sql文件,在工程的resources文件夹下,...

    spring security 安全权限管理手册

    1、搭建基本的Spring Security项目 2、使用数据库管理用户权限 3、自定义认证数据库表结构 4、自定义登录页面 5、使用数据库管理资源 6、控制用户信息 MD5加密 获取当前用户信息 7、自定义访问拒绝页面 8、动态...

    java学习之SpringSecurity配置了登录链接无权限

    我们在使用SpringSecurity作为后台权限框架的时候,框架给我们提供了配置登录请求的接口,供我们配置登录链接,当我们配置了登录链接地址后,前端访问登陆请求的时候显示无权限。 异常分析 由于SpringSecurity的...

    Spring security实现登陆和权限角色控制

    主要介绍了Spring security实现登陆和权限角色控制,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    springsecurity+jwt权限系统demo.zip

    springsecurity+jwt权限系统demo,只有后端,测试请使用postman,未登录情况下不可以访问指定路径的接口,用户登录之后不可以访问管理员接口,管理员可以访问其角色一下的所有接口,角色可以继承

    基于springBoot+springSecurity+jwt实现前后端分离用户权限认证

    springSecurity也有很多种权限认证方式,本项目主要实现基于接口授权,也就是说通过注解给controller赋予权限,用户只有拥有某个接口的权限才能成功访问这个接口,从而实现不同用户拥有不同访问权限;

    Spring-Security-Demo

    SpringSecurity,这是一种基于Spring AOP和Servlet过滤器的安全框架。...本实例简单配置了springsecurity权限控制,提供admin,user两个用户,在页面登录时以不同角色可访问不同页面,初学者可加以参考此例 谢谢!

    springsecuritytest自定义权限成功实例.rar

    springsecuritytest自定义权限成功实例.rar 每个类都有相应的详细的介绍,看懂不难,当前前提还是需要对Springsecurity有些了解,自定义权限拦截器;认证管理器;用户详细信息;资源访问管理;用户信息查询等类;

    最详细Spring Security学习资料(源码)

    Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的...Web集成:Spring Security能够无缝集成到Spring框架和Spring MVC中,提供了过滤器、标签库等工具,简化了权限控制和

    Spring Security 参考手册_Spring Security中文版.pdf

    一个能够为基于Spring的企业应用系统提供声明式的安全訪问控制解决方式的安全框架(简单说是对访问权限进行控制嘛),应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。用户认证指...

    自定义Spring Security的身份验证失败处理方法

    在本篇文章里小编给大家整理了一篇关于自定义Spring Security的身份验证失败的处理方法,有需要的朋友们学习下。

    spring-security-acl-mongodb:基于 Spring Security MongoDB 的访问控制列表 (ACL) 实现

    Spring Security ACL MongoDB Spring Security 访问控制列表 (ACL) 是一种方便的方式来授予对域对象(例如书籍或联系人列表)的基于用户的权限访问。 默认情况下,Spring Security通过4个SQL表管理ACL,这些SQL表在...

    统一安全认证(基于Spring Security 3)

    Java语言开发的统一角色访问控制系统(Unified Role Access Control System),基于Spring Security 3实现的权限控制系统 程序框架版本说明:Spring MVC 3.0.6 + Spring Security 3.1.3 + Hibernate 3.6.10 运行...

    spring-boot mybaits spring security redis整合

    spring security权限管理。 aop日志记录。 4、调度 ====== Spring task, 可以查询已经注册的任务。立即执行一次任务。 5、缓存和Session =========== 注解redis缓存数据,Spring-session和redis实现分布式...

    Spring Security 中文教程.pdf

    15. 基于表达式的权限控制 15.1. 概述 15.1.1. 常用内建表达式 15.2. Web 安全表达式 15.3. 方法安全表达式 15.3.1. @Pre 和 @Post 注解 15.3.1.1. 访问控制使用 @PreAuthorize 和 @PostAuthorize ...

    spring security 参考手册中文版

    9.5 Spring Security中的访问控制(授权) 84 9.5.1安全和AOP建议 84 9.5.2安全对象和AbstractSecurityInterceptor 85 什么是配置属性? 85 RunAsManager 86 AfterInvocationManager 86 扩展安全对象模型 87 9.6本地...

    Spring-Boot结合Security+JWT 简单实现前后端分离用户登录、授权案例

    Spring-Security结合JWT 实现前后端分离完成权限验证功能案例,案例中,主要完成用户登录获取Token,通过Token访问Rest接口,没有权限或授权失败时返回JSON,前端根据状态码进行重新登录;案例中的用户名称: jake_j...

Global site tag (gtag.js) - Google Analytics