3.4 KiB
3.4 KiB
本小节中,我们来自定义一波 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-style 为 random-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 请求格式携带令牌,才能够请求成功登出接口,如下图所示: