2021-07-24 01:10:46 +08:00
|
|
|
|
|
|
|
|
|
# 微服务中使用Sa-Token 依赖引入说明
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
虽然在 [开始] 章节已经说明了依赖引入规则,但是交流群里不少小伙伴提出bug解决到最后发现都是因为依赖引入错误导致的,此处再次重点强调一下:
|
|
|
|
|
|
2024-07-29 00:43:55 +08:00
|
|
|
|
> [!TIP| style:callout]
|
2021-07-24 01:10:46 +08:00
|
|
|
|
> **在微服务架构中使用Sa-Token时,网关和内部服务要分开引入Sa-Token依赖(不要直接在顶级父pom中引入Sa-Token)**
|
|
|
|
|
|
2022-10-20 13:06:36 +08:00
|
|
|
|
总体来讲,我们需要关注的依赖就是两个:`sa-token-spring-boot-starter` 和 `sa-token-reactor-spring-boot-starter`:
|
2021-07-24 01:10:46 +08:00
|
|
|
|
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<!---------------------------- tabs:start ---------------------------->
|
|
|
|
|
<!-------- tab:Maven 方式 -------->
|
2023-09-02 15:39:53 +08:00
|
|
|
|
注:如果你使用的是 `SpringBoot 3.x`,只需要将 `sa-token-spring-boot-starter` 修改为 `sa-token-spring-boot3-starter` 即可。
|
2022-10-20 13:06:36 +08:00
|
|
|
|
``` xml
|
2022-10-21 11:27:29 +08:00
|
|
|
|
<!-- Sa-Token 权限认证,在线文档:https://sa-token.cc -->
|
2021-07-24 01:10:46 +08:00
|
|
|
|
<dependency>
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<groupId>cn.dev33</groupId>
|
|
|
|
|
<artifactId>sa-token-spring-boot-starter</artifactId>
|
|
|
|
|
<version>${sa.top.version}</version>
|
2021-07-24 01:10:46 +08:00
|
|
|
|
</dependency>
|
|
|
|
|
```
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<!-------- tab:Gradle 方式 -------->
|
2023-09-02 15:39:53 +08:00
|
|
|
|
注:如果你使用的是 `SpringBoot 3.x`,只需要将 `sa-token-spring-boot-starter` 修改为 `sa-token-spring-boot3-starter` 即可。
|
2022-10-20 13:06:36 +08:00
|
|
|
|
``` gradle
|
2022-10-21 11:27:29 +08:00
|
|
|
|
// Sa-Token 权限认证,在线文档:https://sa-token.cc
|
2022-10-20 13:06:36 +08:00
|
|
|
|
implementation 'cn.dev33:sa-token-spring-boot-starter:${sa.top.version}'
|
|
|
|
|
```
|
|
|
|
|
<!---------------------------- tabs:end ---------------------------->
|
2021-07-24 01:10:46 +08:00
|
|
|
|
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<!---------------------------- tabs:start ------------------------------>
|
|
|
|
|
<!-------- tab:Maven 方式 -------->
|
2023-09-02 15:39:53 +08:00
|
|
|
|
注:如果你使用的是 `SpringBoot 3.x`,只需要将 `sa-token-reactor-spring-boot-starter` 修改为 `sa-token-reactor-spring-boot3-starter` 即可。
|
2022-10-20 13:06:36 +08:00
|
|
|
|
``` xml
|
2022-10-21 11:27:29 +08:00
|
|
|
|
<!-- Sa-Token 权限认证(Reactor响应式集成),在线文档:https://sa-token.cc -->
|
2021-07-24 01:10:46 +08:00
|
|
|
|
<dependency>
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<groupId>cn.dev33</groupId>
|
|
|
|
|
<artifactId>sa-token-reactor-spring-boot-starter</artifactId>
|
|
|
|
|
<version>${sa.top.version}</version>
|
2021-07-24 01:10:46 +08:00
|
|
|
|
</dependency>
|
|
|
|
|
```
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<!-------- tab:Gradle 方式 -------->
|
2023-09-02 15:39:53 +08:00
|
|
|
|
注:如果你使用的是 `SpringBoot 3.x`,只需要将 `sa-token-reactor-spring-boot-starter` 修改为 `sa-token-reactor-spring-boot3-starter` 即可。
|
2022-10-20 13:06:36 +08:00
|
|
|
|
``` gradle
|
2022-10-21 11:27:29 +08:00
|
|
|
|
// Sa-Token 权限认证(Reactor响应式集成),在线文档:https://sa-token.cc
|
2022-10-20 13:06:36 +08:00
|
|
|
|
implementation 'cn.dev33:sa-token-reactor-spring-boot-starter:${sa.top.version}'
|
|
|
|
|
```
|
|
|
|
|
<!---------------------------- tabs:end ------------------------------>
|
2021-07-24 01:10:46 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
至于怎么分辨我们需要引入哪个呢?这个要看你使用的基础框架:
|
|
|
|
|
|
|
|
|
|
对于内部基础服务来讲,我们一般都是使用SpringBoot默认的web模块:SpringMVC,
|
|
|
|
|
因为这个SpringMVC是基于Servlet模型的,在这里我们需要引入的是`sa-token-spring-boot-starter`
|
|
|
|
|
|
|
|
|
|
对于网关服务,大体来讲分为两种:
|
2023-09-02 15:39:53 +08:00
|
|
|
|
- 一种是基于Servlet模型的,如:Zuul,我们需要引入的是:`sa-token-spring-boot-starter`,详细戳:[在SpringBoot环境集成](/start/example);理论上`Zuul`并不支持`Spring Boot3`
|
2022-04-23 14:14:49 +08:00
|
|
|
|
- 一种是基于Reactor模型的,如:SpringCloud Gateway、ShenYu 等等,我们需要引入的是:`sa-token-reactor-spring-boot-starter`,**并且注册全局过滤器!**,详细戳:[在WebFlux环境集成](/start/webflux-example)
|
2021-07-24 01:10:46 +08:00
|
|
|
|
|
|
|
|
|
注:切不可直接在一个项目里同时引入这两个依赖,否则会造成项目无法启动
|
|
|
|
|
|
|
|
|
|
另外,我们需要引入Redis集成包,因为我们的网关和子服务主要通过Redis来同步数据
|
2022-10-20 13:06:36 +08:00
|
|
|
|
|
|
|
|
|
<!---------------------------- tabs:start ------------------------------>
|
|
|
|
|
<!-------- tab:Maven 方式 -------->
|
|
|
|
|
``` xml
|
|
|
|
|
<!-- Sa-Token 整合 Redis (使用 jackson 序列化方式) -->
|
2021-07-24 01:10:46 +08:00
|
|
|
|
<dependency>
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<groupId>cn.dev33</groupId>
|
2023-06-24 17:41:19 +08:00
|
|
|
|
<artifactId>sa-token-redis-jackson</artifactId>
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<version>${sa.top.version}</version>
|
2021-07-24 01:10:46 +08:00
|
|
|
|
</dependency>
|
|
|
|
|
<dependency>
|
|
|
|
|
<groupId>org.apache.commons</groupId>
|
|
|
|
|
<artifactId>commons-pool2</artifactId>
|
|
|
|
|
</dependency>
|
|
|
|
|
```
|
2022-10-20 13:06:36 +08:00
|
|
|
|
<!-------- tab:Gradle 方式 -------->
|
|
|
|
|
``` gradle
|
|
|
|
|
// Sa-Token 整合 Redis (使用 jackson 序列化方式)
|
2023-06-24 17:41:19 +08:00
|
|
|
|
implementation 'cn.dev33:sa-token-redis-jackson:${sa.top.version}'
|
2022-10-20 13:06:36 +08:00
|
|
|
|
implementation 'org.apache.commons:commons-pool2'
|
|
|
|
|
```
|
|
|
|
|
<!---------------------------- tabs:end ------------------------------>
|
|
|
|
|
|
2021-07-24 01:10:46 +08:00
|
|
|
|
详细参考:[集成 Redis](/up/integ-redis)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|