weblog/doc/7、Gateway 网关搭建与接口鉴权/7.3 SaToken 自定义 Token 生成风格与请求格式.md
2025-02-17 11:57:55 +08:00

3.4 KiB
Raw Blame History

本小节中,我们来自定义一波 SaToken 权限框架的 Token 生成风格以及请求格式。

自定义 Token 风格

在 SaToken 中Token 风格可以通过 sa-token.token-style 配置项来定制,默认的生成策略是 uuid 风格,值类似于 623368f0-ae5e-4475-a53f-93e4225f16ae 如下图所示, 看上去比较短,有木有~

其实SaToken 内置支持的风格有多种,大致如下:

/ 1. token-style=uuid    —— uuid风格 (默认风格)
"623368f0-ae5e-4475-a53f-93e4225f16ae"

// 2. token-style=simple-uuid    —— 同上uuid风格, 只不过去掉了中划线
"6fd4221395024b5f87edd34bc3258ee8"

// 3. token-style=random-32    —— 随机32位字符串
"qEjyPsEA1Bkc9dr8YP6okFr5umCZNR6W"

// 4. token-style=random-64    —— 随机64位字符串
"v4ueNLEpPwMtmOPMBtOOeIQsvP8z9gkMgIVibTUVjkrNrlfra5CGwQkViDjO8jcc"

// 5. token-style=random-128    —— 随机128位字符串
"nojYPmcEtrFEaN0Otpssa8I8jpk8FO53UcMZkCP9qyoHaDbKS6dxoRPky9c6QlftQ0pdzxRGXsKZmUSrPeZBOD6kJFfmfgiRyUmYWcj4WU4SSP2ilakWN1HYnIuX0Olj"

// 6. token-style=tik    —— tik风格
"gr_SwoIN0MC1ewxHX_vfCW3BothWDZMMtx__"

这里我们选择长一点的,即 random-128 风格,修改网关服务与认证服务的 applicaiton.yml 配置文件,修改 token-stylerandom-128, 如下:

修改完成后,重启认证服务与网关服务,通过一个新的手机号来获取登录验证码,并调用登录接口拿到新的令牌,因为老手机号的登录 Token 存放在 Redis 中,大概率还没有过期,再次请求还会拿到之前老的令牌值:

如上图所示,现在生成的 Token 风格就是 random-128 类型了。

自定义 Token 请求风格

星球上个项目 中,请求需要认证鉴权的接口,需要在请求头中携带上 Token 令牌,如下图标注所示:

格式如下,这种格式是比较通用、规范的 Token 请求格式

Authorization = Bearer + 空格 + 令牌值

那么,如何将 SaToken 也定制为上述格式呢?修改认证服务与网关服务的 application.yml 文件,修改内容如下:

sa-token:
  # token 名称(同时也是 cookie 名称)
  token-name: Authorization
  # token前缀
  token-prefix: Bearer
  // 省略...
  • token-name: 指定 Token 令牌的名称,默认为 satoken , 这里修改为 Authorization;
  • token-prefix: 指定 token 前缀,默认为空,这里修改为 Bearer

以上配置完成后,重启认证服务与网关服务,再来测试一波登出接口,如果你还是以 satoken 的请求头来携带令牌,网关会提示你:未能读取到有效 token :

只有在请求头中,按正确的 Token 请求格式携带令牌,才能够请求成功登出接口,如下图所示:

本小节源码下载

https://t.zsxq.com/Hd9I9