Skip to content
On this page

简介

  • 应用每次接收到请求,会拦截到需要鉴权的 API 信息,并对其请求头携带的 Token 进行认证。
  • 若 Token 过期、不存在、错误,都会导致鉴权失败,继而无法访问到对应的 API。
  • 本章介绍 sa-token 的基本使用方法。

如何通过认证

  1. 首先需要访问 Auth (/b/doLogin)接口,传入账号名密码,获得授权成功后的信息

  2. 启动CbbDemoApplication这个服务

  3. 调用 http://localhost:9010/b/doLogin 传入对应参数,如下图所示则说明认证信息获取成功。我们先快速调用查看效果。

  4. 从返回的 Json 中取到 tokenNametokenValue,将他们拼接起来并以逗号隔开

  5. 设置添加请求头参数tokenName 的值,请求头对应的值为 tokenValue的值

  6. 再次调用 http://localhost:9010/api/info?info=cbb-demo 发现返回 Hello,Response success:cbb-demo 说明鉴权成功!

  7. 理论上看,所有业务 API,都需要进行鉴权,这样才能保证整个系统的安全性,但也有个别特例情况,API 不需要认证也可以调用,这里就需要用到 sa-token 的 API 放行配置。

  8. 有些业务 API 鉴权就算成功,也有可能需要根据角色权限来判断是否可以调用,这里就需要用到 sa-token 更细颗粒度的鉴权配置。

API 鉴权

配置 API 放行

  1. 前往对应配置文件,增加接口放行配置

  2. 若需要拦截某个 api 下所有的请求,则可以改为 /api/**, 其中 ** 则代表下层所有请求

  3. 重启工程,去掉请求头,可以看到,请求成功了,说明 API 放行 配置成功

细颗粒度鉴权配置

  1. 鉴权配置用到了 sa-token 模块的 @SaCheckPermission 注解
  2. 例如 @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