赞
踩
目录
AuthApplication
、UserApplication
、 BladeLogApplication
三个服务("c3dvcmQ6c3dvcmRfc2VjcmV0"为clientId:clientSecret串转换为的base64编码,这个是可变的)
4.从返回的Json中取到 tokenType
和 accessToken
,将他们拼接起来并以逗号隔开
5.设置请求头为blade-auth
,请求头对应的值为 tokenType
+ ' '
+ accessToken
(后续的所有接口调用都需要带上请求头为 Authorization
值为 c3dvcmQ6c3dvcmRfc2VjcmV0
)
6.再次调用 http://localhost/blade-demo/api/info?name=Chill 发现返回 Hello, My Name Is: Chill
说明鉴权成功!
7.理论上看,所有业务API,都需要进行鉴权,这样才能保证整个系统的安全性,但也有个别特例情况,API 不需要认证也可以调用,这里就需要用到 Secure 的 API 放行配置。
8.有些业务 API 鉴权就算成功,也有可能需要根据角色权限来判断是否可以调用,这里就需要用到 Secure更细颗粒度的鉴权配置。
扩展:密码可能会进行二次加密
如这一个admin就是md5加密后
将得到的Authorization、Blade-Auth填入
(请求参数Params中填name:vulue即可)
2.若是使用SpringCloud,则打开nacos,找到对应配置文件增加接口放行配置
3.若需要拦截某个api下所有的请求,则可以改为 /api/**
, 其中 **
则代表下层所有请求
4.重启工程,去掉请求头,可以看到,请求成功了,说明 API 放行
配置成功
@PreAuth
注解count
进行权限放行(只要通过Token认证就可调用API)。- @GetMapping("count")
- @PreAuth("permitAll()")
- public Integer count(Integer cnt) {
- return cnt * 10;
- }
3.对 info
进行权限判断,调用方需要拥有test
的角色权限才可以调用
- @GetMapping("info")
- @PreAuth("hasRole('test')")
- public String info(String name) {
- return "Hello, My Name Is: " + name;
- }
4.调用 /api/count
发现请求成功。
5.调用 /api/info
发现又变回了 请求未授权
,因为我们的admin
账号没有分配test
角色
6.尝试改回admin
权限
- @GetMapping("info")
- @PreAuth("hasRole('administrator')")
- public String info(String name) {
- return "Hello, My Name Is: " + name;
- }
7.调用 /api/info
发现请求成功。
@PreAuth
配置的逻辑是否符合,若不符合也返回请求未授权
。@PreAuth
支持类层级和方法层级,放到类层级则对该类的所有方法进行鉴权。@PreAuth
还支持 Spring el 表达式,可拓展性非常高,更多功能等您挖掘~
GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge
更多请参考springBlade开发手册:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。