spring|Spring Security基于角色授权介绍(八)
文章图片
文章图片
上一篇文章把security框架中的用户认证功能介绍完了 , 这篇文章开始介绍security框架中的另一个功能 , 即:用户授权 。 授权就是指:指定哪些用户能够访问系统的哪些资源(访问哪些功能) 。
一、security中的授权security中可以有如下几种方式进行授权的设置 , 分别是:
- 基于内存的角色授权
- 基于角色的授权
- 基于权限的授权
- 基于注解的授权
- 动态授权
二、基于角色的授权在之前用户认证的工程中 , 其实会存在一个问题 , 就是在security配置类中没有设置访问授权 , 那么此时用户不需要认证就可以访问系统的任意资源 。
(1)创建测试类
创建【TestController】测试类 , 里面编写两个方法 , 用于测试授权访问效果 。
启动工程 , 在不登录的情况下 , 可以发现依然能够访问两个测试方法 , 这是因为在security配置类的configure(HttpSecurity http)方法中没有设置授权访问 。
(2)设置请求授权
在configure(HttpSecurity http)方法中 , 除了登录处理请求外 , 其余所有请求设置为需要认证才能够访问 , 如下所示:
再次启动工程 , 然后再次访问test01和test02两个请求 , 可以发现 , 此时没有认证就会跳转到用户登录页面 。
(3)设置url访问所需要的角色
在security配置类中 , 设置url请求所需要的角色 , 主要有两个方法:
- hasRole():拥有指定角色才能够访问
- hasAnyRole():拥有任意一个角色就可以访问
设置访问ur所需要的l角色权限之后 , security框架就会通过获取当前登录人的角色 , 然后和对应访问url的角色进行比对 , 如果登录人拥有访问url的角色 , 则可以访问 , 否则抛出403异常 。
用户的角色信息一般都是查询数据库获取 , 这里为了演示 , 就不进行查询数据 , 通过直接指定用户角色进行测试 。 在【MyUserService】类中 , 指定用户角色(注意:角色必须使用ROLE_开头 , 因为security框架默认会给用户角色添加ROLE_前缀 , 所以从数据库中查询出来的角色必须是ROLE_开头 , 否则无法匹配成功) 。
启动工程 , 首先登录系统 , 然后访问两个测试url , 可以发现 , 能够正常访问/api/test01 , 但是访问/api/test02时候 , 出现了403错误页面 。
可以将登录用户的角色设置为ROLE_test进行测试 , 再次访问 , 发现只能访问/api/test02 , 无法访问/api/test01 。
以上 , 就是security通过用户角色对访问的url资源进行授权判断 , 当用户拥有的角色和url访问的角色能够匹配上 , 则有权限访问 , 否则抛出403错误页面 。
【spring|Spring Security基于角色授权介绍(八)】这是我的第86篇文章 , 谢谢大家阅读 。
- spring|如何判断网站的质量
- spring|iPadPro深度评测:真能取代电脑?
- spring|注入华为“灵魂”的赛力斯凉了,下一个凉的是谁?
- spring|5000mAh+67W快充+6nm旗舰芯,现已跌至1469元,售价更亲民了
- spring|三线城市程序员真的是yyds?工作性价比最高?
- spring|2022年最值得考虑的四部手机,每一款都是对性价比最好的诠释
- 编程|Java培训:为什么JavaSpring框架似乎是所有复杂问题的解决方案?
- Java|Java培训:为什么JavaSpring框架似乎是所有复杂问题的解决方案?
- spring|这个白手起家的狠人 亲手创造5个销售神话
- Java|Web前端培训:使用 Spring Boot 应用程序进行客户端开发