sa-token/sa-token-doc/doc/use/token-style.md

108 lines
3.5 KiB
Markdown
Raw Normal View History

2020-12-18 00:39:14 +08:00
# 花式token
本篇介绍token生成的各种风格以及自定义token生成策略
---
## 内置风格
2021-04-17 17:08:02 +08:00
Sa-Token默认的token生成策略是uuid风格, 其模样类似于:`623368f0-ae5e-4475-a53f-93e4225f16ae`<br>
如果你对这种风格不太感冒还可以将token生成设置为其他风格
2020-12-18 00:39:14 +08:00
2021-07-01 15:15:54 +08:00
怎么设置呢只需要在yml配置文件里设置 `sa-token.token-style=风格类型` 即可,其有多种取值:
2020-12-18 00:39:14 +08:00
2021-04-17 17:08:02 +08:00
``` java
// 1. token-style=uuid —— uuid风格 (默认风格)
"623368f0-ae5e-4475-a53f-93e4225f16ae"
2020-12-18 00:39:14 +08:00
2021-04-17 17:08:02 +08:00
// 2. token-style=simple-uuid —— 同上uuid风格, 只不过去掉了中划线
"6fd4221395024b5f87edd34bc3258ee8"
2020-12-18 00:39:14 +08:00
2021-04-17 17:08:02 +08:00
// 3. token-style=random-32 —— 随机32位字符串
"qEjyPsEA1Bkc9dr8YP6okFr5umCZNR6W"
2020-12-18 00:39:14 +08:00
2021-04-17 17:08:02 +08:00
// 4. token-style=random-64 —— 随机64位字符串
"v4ueNLEpPwMtmOPMBtOOeIQsvP8z9gkMgIVibTUVjkrNrlfra5CGwQkViDjO8jcc"
2020-12-18 00:39:14 +08:00
2021-04-17 17:08:02 +08:00
// 5. token-style=random-128 —— 随机128位字符串
"nojYPmcEtrFEaN0Otpssa8I8jpk8FO53UcMZkCP9qyoHaDbKS6dxoRPky9c6QlftQ0pdzxRGXsKZmUSrPeZBOD6kJFfmfgiRyUmYWcj4WU4SSP2ilakWN1HYnIuX0Olj"
2020-12-18 00:39:14 +08:00
2021-04-17 17:08:02 +08:00
// 6. token-style=tik —— tik风格
"gr_SwoIN0MC1ewxHX_vfCW3BothWDZMMtx__"
2020-12-18 00:39:14 +08:00
```
## 自定义token生成策略
如果你觉着以上风格都不是你喜欢的类型,那么你还可以**自定义token生成策略**来定制化token生成风格 <br>
怎么做呢?只需要重写`SaTokenAction`接口的`createToken`方法即可
2020-12-18 00:39:14 +08:00
#### 参考步骤如下:
2021-02-12 01:57:31 +08:00
1、新建文件`MySaTokenAction.java`,继承`SaTokenActionDefaultImpl`默认实现类, 并添加上注解`@Component`,保证此类被`springboot`扫描到
2020-12-18 00:39:14 +08:00
``` java
2021-02-12 01:57:31 +08:00
package com.pj.satoken;
import org.springframework.stereotype.Component;
import cn.dev33.satoken.action.SaTokenActionDefaultImpl;
/**
2021-06-19 01:38:37 +08:00
* 继承Sa-Token行为Bean默认实现, 重写部分逻辑
2021-02-12 01:57:31 +08:00
*/
@Component
public class MySaTokenAction extends SaTokenActionDefaultImpl {
// 重写token生成策略
@Override
2021-06-16 16:24:39 +08:00
public String createToken(Object loginId, String loginType) {
2021-02-12 01:57:31 +08:00
return SaTokenInsideUtil.getRandomString(60); // 随机60位字符串
2020-12-18 00:39:14 +08:00
}
2021-02-12 01:57:31 +08:00
}
2020-12-18 00:39:14 +08:00
```
2021-06-16 16:24:39 +08:00
2、再次调用 `StpUtil.login(10001)`方法进行登录观察其生成的token样式:
2020-12-18 00:39:14 +08:00
``` html
2021-02-12 01:57:31 +08:00
gfuPSwZsnUhwgz08GTCH4wOgasWtc3odP4HLwXJ7NDGOximTvT4OlW19zeLH
2020-12-18 00:39:14 +08:00
```
## 以雪花算法生成token
在此再举一个例子,以`自定义token生成策略`的方式集成`雪花算法`来生成token
2021-02-12 01:57:31 +08:00
1、首先我们需要找一个合适的类库帮助我们生成雪花算法唯一id在此推荐 [Hutool](https://hutool.cn/docs/#/) ,在`pom.xml`里添加依赖:
2020-12-18 00:39:14 +08:00
``` xml
2021-02-12 01:57:31 +08:00
<!-- Hutool 一个小而全的Java工具类库 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.5.4</version>
</dependency>
2020-12-18 00:39:14 +08:00
```
2021-02-12 01:57:31 +08:00
2、同上我们需要新建文件`MySaTokenAction.java`,继承`SaTokenActionDefaultImpl`默认实现类, 并添加上注解`@Component`,保证此类被`springboot`扫描到
2020-12-18 00:39:14 +08:00
``` java
2021-02-12 01:57:31 +08:00
package com.pj.satoken;
import org.springframework.stereotype.Component;
import cn.dev33.satoken.action.SaTokenActionDefaultImpl;
import cn.hutool.core.util.IdUtil;
/**
2021-06-19 01:38:37 +08:00
* 继承Sa-Token行为Bean默认实现, 重写部分逻辑
2021-02-12 01:57:31 +08:00
*/
@Component
public class MySaTokenAction extends SaTokenActionDefaultImpl {
// 重写token生成策略
@Override
2021-06-16 16:24:39 +08:00
public String createToken(Object loginId, String loginType) {
2021-02-12 01:57:31 +08:00
return IdUtil.getSnowflake(1, 1).nextIdStr(); // 以雪花算法生成token
2020-12-18 00:39:14 +08:00
}
2021-02-12 01:57:31 +08:00
}
2020-12-18 00:39:14 +08:00
```
2021-06-16 16:24:39 +08:00
3、再次调用 `StpUtil.login(10001)`方法进行登录观察其生成的token样式:
2020-12-18 00:39:14 +08:00
``` html
2021-02-12 01:57:31 +08:00
1339604338175250432
2020-12-18 00:39:14 +08:00
```