简介
- 应用每次接收到请求,会拦截到需要鉴权的 API 信息,并对其请求头携带的 Token 进行认证。
- 若 Token 过期、不存在、错误,都会导致鉴权失败,继而无法访问到对应的 API。
- 本章介绍 sa-token 的基本使用方法。
如何通过认证
首先需要访问 Auth (/b/doLogin)接口,传入账号名密码,获得授权成功后的信息
启动
CbbDemoApplication
这个服务调用
http://localhost:9010/b/doLogin
传入对应参数,如下图所示则说明认证信息获取成功。我们先快速调用查看效果。从返回的 Json 中取到
tokenName
和tokenValue
,将他们拼接起来并以逗号隔开设置添加请求头参数
tokenName 的值
,请求头对应的值为tokenValue的值
再次调用
http://localhost:9010/api/info?info=cbb-demo
发现返回Hello,Response success:cbb-demo
说明鉴权成功!理论上看,所有业务 API,都需要进行鉴权,这样才能保证整个系统的安全性,但也有个别特例情况,API 不需要认证也可以调用,这里就需要用到 sa-token 的 API 放行配置。
有些业务 API 鉴权就算成功,也有可能需要根据角色权限来判断是否可以调用,这里就需要用到 sa-token 更细颗粒度的鉴权配置。
API 鉴权
配置 API 放行
前往对应配置文件,增加接口放行配置
若需要拦截某个 api 下所有的请求,则可以改为
/api/**
, 其中**
则代表下层所有请求重启工程,去掉请求头,可以看到,请求成功了,说明
API 放行
配置成功
细颗粒度鉴权配置
- 鉴权配置用到了 sa-token 模块的
@SaCheckPermission
注解 - 例如 @SaCheckPermission("app:menu:add"),意思是需要拥有'app:menu:add'权限
结尾
- sa-token 框架进行了两层 API 鉴权。
- 第一层校验请求携带的 Token 是否合法,不需要 Token 校验的可通过配置放行。
- 第二层校验
@SaCheckPermission
配置的逻辑是否符合,若不符合也返回请求未授权
。 - 注解
@SaCheckPermission
支持类层级和方法层级,放到类层级则对该类的所有方法进行鉴权。 - 注解
@SaCheckPermission
还支持 Spring el 表达式,可拓展性非常高,更多功能等您挖掘~ - Spring el 文档地址:https://docs.spring.io/spring/docs/5.1.6.RELEASE/spring-framework-reference/core.html#expressions