sa-token登录机制以及网关统一鉴权环境搭建

文章目录

    • 1.sa-token1.37集成(基于token)
        • 1.文档网址
        • 2.**sun-club-auth-application-controller引入依赖**
        • 3.application.yml
        • 4.sun-club-auth-application-controller测试的controller
          • 1.UserController.java
          • 2.启动测试
            • 1.登录,得到satoken
            • 2.验证登录时在Header中携带token,注意,需要携带在application.yml中配置的前缀 **jichi**
    • 2.网关统一鉴权环境搭建
        • 1.OSS微服务注册到Nacos
          • 1.调整依赖 pom.xml
            • 1.properties
            • 2.dependencyManagement 指定版本
            • 3.由于使用了dependencyManagement指定版本,那么就不需要dependency来指定版本了,删除
            • 4.由于指定了版本,所有用到springboot、cloud、cloudalibaba的都不需要指定版本
            • 5.添加maven打包的常规配置
            • 6.cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖
            • 7.引入Nacos的服务发现依赖
            • 8.完整的依赖
          • 2.bootstrap.yml 配置服务发现
          • 3.启动OSS服务测试,注册成功
        • 2.GateWay搭建以及路由配置
          • 1.依赖配置(注意:gateway不能引入springboot-web)
          • 2.application.yml
            • 请求oss模块的方式:GateWay的ip+端口号/oss/上下文路径+资源路径
          • 3.bootstrap.yml
          • 4.编写启动类 GatewayApplication.java
          • 5.启动报错,连接的是localhost:8848
            • 1.报错信息
            • 2.原因
            • 3.重启测试,注册成功
          • 6.通过GateWay来访问OSS模块
            • 1.请求方式
            • 2.请求,发现503服务不可用
            • 3.原因是网关使用了lb的方式,进行负载均衡,但是没引入负载均衡器依赖
            • 4.再次请求,成功响应
        • 3.鉴权微服务及刷题微服务注册到Nacos
          • 1.sun-club-auth 模块
            • 1.引入Nacos依赖
            • 2.指定版本
            • 3.完整pom.xml
            • 4.bootstrap.yml
            • 5.启动测试,注册成功
          • 2.sun-club-subject 模块
            • 1.引入Nacos依赖
            • 2.bootstrap.yml
            • 3.启动测试,注册成功
        • 4.鉴权微服务及刷题微服务网关配置
          • 1.application.yml 配置网关
          • 2.测试
            • 1.sun-club-auth 访问 [localhost:5000/auth/user/doLogin?username=zhang&password=123456](http://localhost:5000/auth/user/doLogin?username=zhang&password=123456)
            • 2.sun-club-subject 访问 http://localhost:5000/subject/subject/category/queryPrimaryCategory

1.sa-token1.37集成(基于token)

1.文档网址

https://sa-token.cc/v/v1.37.0/doc.html#/

2.sun-club-auth-application-controller引入依赖
        <!-- Sa-Token 权限认证,在线文档:https://sa-token.cc --><dependency><groupId>cn.dev33</groupId><artifactId>sa-token-spring-boot-starter</artifactId><version>1.37.0</version></dependency>
3.application.yml
sa-token:# token 名称(同时也是 cookie 名称)token-name: satoken# token 有效期(单位:秒) 默认30天,-1 代表永久有效timeout: 2592000# token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结active-timeout: -1# 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)is-concurrent: true# 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)is-share: true# token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)token-style: random-32# 是否输出操作日志is-log: truetoken-prefix: jichi
4.sun-club-auth-application-controller测试的controller
1.UserController.java
package com.sunxiansheng.auth.application.controller;import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Description:* @Author sun* @Create 2024/6/2 17:25* @Version 1.0*/
@RestController
@RequestMapping("/user/")
public class UserController {// 测试登录,浏览器访问: http://localhost:8081/user/doLogin?username=zhang&password=123456@RequestMapping("doLogin")public SaResult doLogin(String username, String password) {// 此处仅作模拟示例,真实项目需要从数据库中查询数据进行比对if("zhang".equals(username) && "123456".equals(password)) {StpUtil.login(10001);SaTokenInfo tokenInfo = StpUtil.getTokenInfo();// 第3步,返回给前端return SaResult.data(tokenInfo);}return SaResult.error("登录失败");}// 查询登录状态,浏览器访问: http://localhost:8081/user/isLogin@RequestMapping("isLogin")public String isLogin() {return "当前会话是否登录:" + StpUtil.isLogin();}}
2.启动测试
1.登录,得到satoken

image-20240602175058537

2.验证登录时在Header中携带token,注意,需要携带在application.yml中配置的前缀 jichi

image-20240602175613420

2.网关统一鉴权环境搭建

1.OSS微服务注册到Nacos
1.调整依赖 pom.xml
1.properties
    <properties><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.4.2</spring-boot.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version><spring-cloud.version>2020.0.6</spring-cloud.version></properties>
2.dependencyManagement 指定版本
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
3.由于使用了dependencyManagement指定版本,那么就不需要dependency来指定版本了,删除

image-20240603134112023

4.由于指定了版本,所有用到springboot、cloud、cloudalibaba的都不需要指定版本

image-20240603134340299

5.添加maven打包的常规配置
<!-- maven打包常规配置 -->
<build><finalName>${project.artifactId}</finalName><!--打包成jar包时的名字--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.0.RELEASE</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins>
</build>
6.cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖
<!-- cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
7.引入Nacos的服务发现依赖
<!-- Nacos的服务发现 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
8.完整的依赖
<!-- maven的配置 -->
<!-- 解决java: -source 1.5 中不支持 diamond 运算符 问题 -->
<properties><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.4.2</spring-boot.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version><spring-cloud.version>2020.0.6</spring-cloud.version>
</properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><!-- 与log4j2冲突 --><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><!-- minio依赖 --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version></dependency><dependency><!-- Nacos的配置中心 --><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><!-- log4j2,如果使用了这个日志,springframework需要排除spring-boot-starter-logging --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency><!-- cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!-- Nacos的服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies><!-- 统一管理配置,以后所有的boot、cloud、alibaba都不需要指定版本了 -->
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><!-- 配置阿里云仓库 -->
<repositories><repository><id>central</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><layout>default</layout><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>
</repositories><!-- maven打包常规配置 -->
<build><finalName>${project.artifactId}</finalName><!--打包成jar包时的名字--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.0.RELEASE</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins>
</build>
2.bootstrap.yml 配置服务发现
3.启动OSS服务测试,注册成功

image-20240603135704600

2.GateWay搭建以及路由配置
1.依赖配置(注意:gateway不能引入springboot-web)
<!-- maven的配置 -->
<!-- 解决java: -source 1.5 中不支持 diamond 运算符 问题 -->
<properties><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.4.2</spring-boot.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version><spring-cloud.version>2020.0.6</spring-cloud.version>
</properties><!-- 统一管理配置,以后所有的boot、cloud、alibaba都不需要指定版本了 -->
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><dependencies><!-- minio依赖 --><dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version></dependency><!-- Nacos --><dependency><!-- Nacos的配置中心 --><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!-- Nacos的服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- GateWay --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency></dependencies><!-- 配置阿里云仓库 -->
<repositories><repository><id>central</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><layout>default</layout><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>
</repositories><!-- maven打包常规配置 -->
<build><finalName>${project.artifactId}</finalName><!--打包成jar包时的名字--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.0.RELEASE</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins>
</build>
2.application.yml
请求oss模块的方式:GateWay的ip+端口号/oss/上下文路径+资源路径
server:port: 5000
spring:cloud:gateway:routes:# 请求到oss模块的规则是:GateWay的ip+端口号/oss/上下文路径+资源路径,而/oss的前缀会在真正转发的时候被去掉 也就是真正请求的完整路径是:GateWay的ip+端口号/上下文路径+资源路径- id: oss # 路由ID,唯一即可uri: lb://sub-club-oss # 转发到的后端服务的服务名,需要与Nacos中注册的服务名一致predicates:- Path=/oss/** # 断言,表示请求路径匹配/oss/**的请求将会被转发到后端服务filters:- StripPrefix=1 # 表示在将请求转发到后端服务之前,去掉路径中的第一个前缀,如果请求路径是/oss/file/upload,经过这个过滤器处理后,路径将变为/file/upload
3.bootstrap.yml
spring:application:name: sub-club-gateway # 服务名称profiles:active: dev # 激活的环境cloud:nacos:discovery:enabled: true # 启用服务发现server-addr:  # Nacos地址
4.编写启动类 GatewayApplication.java
package com.sunxiansheng.club.gateway;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;/*** Description: 网关启动类* @Author sun* @Create 2024/5/31 9:20* @Version 1.0*/
@SpringBootApplication
@ComponentScan("com.sunxiansheng")
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}
}
5.启动报错,连接的是localhost:8848
1.报错信息

[NACOS SocketTimeoutException httpGet] currentServerAddr:http://localhost:8848, err : connect timed out

2.原因

我并没有用到Nacos的配置中心,但是却引入了配置中心的依赖,所以会导致这个问题,注释掉即可

image-20240603144211774

3.重启测试,注册成功

image-20240603144228499

6.通过GateWay来访问OSS模块
1.请求方式

GateWay的ip+端口号/oss/上下文路径+资源路径

2.请求,发现503服务不可用

http://localhost:5000/oss/listBuckets

image-20240603144946317

3.原因是网关使用了lb的方式,进行负载均衡,但是没引入负载均衡器依赖
<!-- 负载均衡器,网关使用lb方式时引入 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
4.再次请求,成功响应

image-20240603145323882

3.鉴权微服务及刷题微服务注册到Nacos
1.sun-club-auth 模块
1.引入Nacos依赖
<!-- cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<!-- Nacos的服务发现 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency><!-- Nacos的配置中心 --><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.指定版本
<!-- maven的配置 -->
<!-- 解决java: -source 1.5 中不支持 diamond 运算符 问题 -->
<properties><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.4.2</spring-boot.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version><spring-cloud.version>2020.0.6</spring-cloud.version>
</properties><!-- 统一管理配置,以后所有的boot、cloud、alibaba都不需要指定版本了 --><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
3.完整pom.xml
<!-- maven的配置 -->
<!-- 解决java: -source 1.5 中不支持 diamond 运算符 问题 -->
<properties><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.4.2</spring-boot.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version><spring-cloud.version>2020.0.6</spring-cloud.version>
</properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.4.2</version><exclusions><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><!-- 引入sun-club-auth-application-controller的依赖,则启动这个模块,就能找到 --><dependency><groupId>com.sun.club</groupId><artifactId>sun-club-auth-application-controller</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入sun-club-infra --><dependency><groupId>com.sun.club</groupId><artifactId>sun-club-auth-infra</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 公共模块 --><dependency><groupId>com.sun.club</groupId><artifactId>sun-club-auth-common</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!-- Nacos的服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><!-- Nacos的配置中心 --><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
</dependencies><!-- 统一管理配置,以后所有的boot、cloud、alibaba都不需要指定版本了 -->
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><!-- maven打包常规配置 -->
<build><finalName>${project.artifactId}</finalName><!--打包成jar包时的名字--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- 指定打包插件的版本 --><version>2.3.0.RELEASE</version><executions><execution><goals><!-- 将所有的包都打到这个模块中 --><goal>repackage</goal></goals></execution></executions></plugin></plugins>
</build>
4.bootstrap.yml
spring:application:name: sub-club-auth # 服务名称profiles:active: dev # 激活的环境cloud:nacos:config:server-addr: # Nacos地址prefix: ${spring.application.name} # 配置前缀为服务名,sub-club-oss-dev为配置文件名group: DEFAULT_GROUP # 配置分组namespace: # 命名空间,如果在public命名空间则不需要配置file-extension: yamldiscovery:enabled: true # 启用服务发现server-addr:  # Nacos地址
5.启动测试,注册成功

image-20240603155814356

2.sun-club-subject 模块
1.引入Nacos依赖
<!-- maven的配置 -->
<!-- 解决java: -source 1.5 中不支持 diamond 运算符 问题 -->
<properties><java.version>1.8</java.version><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.4.2</spring-boot.version><spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version><spring-cloud.version>2020.0.6</spring-cloud.version>
</properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.4.2</version><exclusions><exclusion><artifactId>spring-boot-starter-logging</artifactId><groupId>org.springframework.boot</groupId></exclusion></exclusions></dependency><!-- 引入sun-club-application-controller的依赖,则启动这个模块,就能找到 --><dependency><groupId>com.sun.club</groupId><artifactId>sun-club-application-controller</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入sun-club-infra --><dependency><groupId>com.sun.club</groupId><artifactId>sun-club-infra</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- 引入sun-club-common --><dependency><groupId>com.sun.club</groupId><artifactId>sun-club-common</artifactId><version>1.0-SNAPSHOT</version></dependency><!-- Nacos的配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- cloudalibaba2021版本不会加载bootstrap所以需要手动引入这个依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!-- Nacos的服务发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies><!-- 统一管理配置,以后所有的boot、cloud、alibaba都不需要指定版本了 -->
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><!-- maven打包常规配置 -->
<build><finalName>${project.artifactId}</finalName><!--打包成jar包时的名字--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- 指定打包插件的版本 --><version>2.3.0.RELEASE</version><executions><execution><goals><!-- 将所有的包都打到这个模块中 --><goal>repackage</goal></goals></execution></executions></plugin></plugins>
</build>
2.bootstrap.yml
spring:application:name: sub-club-subject # 服务名称profiles:active: dev # 激活的环境cloud:nacos:config:server-addr: # Nacos地址prefix: ${spring.application.name} # 配置前缀为服务名,sub-club-subject-dev为配置文件名group: DEFAULT_GROUP # 配置分组namespace: # 命名空间,如果在public命名空间则不需要配置file-extension: yamldiscovery:enabled: true # 启用服务发现server-addr: # Nacos地址
3.启动测试,注册成功

image-20240604133529421

4.鉴权微服务及刷题微服务网关配置
1.application.yml 配置网关
# 请求到auth模块的规则是:GateWay的ip+端口号/auth/上下文路径+资源路径,而/auth的前缀会在真正转发的时候被去掉 也就是真正请求的完整路径是:GateWay的ip+端口号/上下文路径+资源路径
- id: authuri: lb://sub-club-authpredicates:- Path=/auth/**filters:- StripPrefix=1
# 请求到subject模块的规则是:GateWay的ip+端口号/subject/上下文路径+资源路径,而/subject的前缀会在真正转发的时候被去掉 也就是真正请求的完整路径是:GateWay的ip+端口号/上下文路径+资源路径
- id: subjecturi: lb://sub-club-subjectpredicates:- Path=/subject/**filters:- StripPrefix=1
2.测试
1.sun-club-auth 访问 localhost:5000/auth/user/doLogin?username=zhang&password=123456

image-20240604134521245

2.sun-club-subject 访问 http://localhost:5000/subject/subject/category/queryPrimaryCategory

image-20240604135039941

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/391138.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FPGA】cordic算法实现三角函数

参考资料&#xff1a;https://zhuanlan.zhihu.com/p/638520243https://zhuanlan.zhihu.com/p/638520243

Hadoop学习(三)

一、MapReduce框架原理 1.1InputFormat数据输入 MapTask并行度决定机制 1&#xff09;数据块&#xff08;HDFS存储数据单位&#xff09;&#xff0c;物理上把数据分成一块一块 2&#xff09;数据切片&#xff08;MapReduce程序计算输入数据的单位)&#xff1a;只是在逻辑上…

Lanproxy开箱即用的内网穿透工服务!!

Lanproxy快速上手配置服务器转发到内网!! 本教程云服务器推荐使用的开发环境如下&#xff1a;服务器端配置配置端口登录Web界面 内网客户端配置下载客户端配置客户端端口 最终效果测试 本文主要记录了使用Lanproxy搭建内网穿透服务的过程&#xff0c;其中包括服务端和客户端的详…

CSP2019第二题: 公交换乘

CSP 2019 公交换乘 题目来源&#xff1a;牛客网 题目&#xff1a;* 示例1 输入 6 0 10 3 1 5 46 0 12 50 1 3 96 0 5 110 1 6 135输出 36题意&#xff1a; 根据输入&#xff0c;计算地铁花费不能用到优惠券的公交车的花费 知识点&#xff1a; 结构体 思路&#xff1…

谷粒商城实战笔记-vagrant避坑指南

文章目录 一&#xff0c;虚拟机磁盘空间不足问题原因解决方案 二&#xff0c;虚拟机导致C盘空间不足 一&#xff0c;虚拟机磁盘空间不足 使用vagrant管理虚拟机的过程中遇到了一个问题&#xff0c;虚拟机安装完成后&#xff0c;很快磁盘dev/sda1就满了&#xff0c;40G的空间&a…

Linux网络-小结

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注我&#xff0c;我尽量把自己会的都分享给大家&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux服务器作为一个常用的网络服务器&#xff0c;主要的作用就是向客户端提供网络…

【Python】数据类型之字符串

本篇文章将继续讲解字符串其他功能&#xff1a; 1、求字符串长度 功能&#xff1a;len(str) &#xff0c;该功能是求字符串str的长度。 代码演示&#xff1a; 2、通过索引获取字符串的字符。 功能&#xff1a;str[a] str为字符串&#xff0c;a为整型。该功能是获取字符…

Java语言程序设计——篇十一(4)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 欢迎大家&#xff1a;这里是我的学习笔记、总结知识的地方&#xff0c;喜欢的话请三连&#xff0c;有问题可以私信&#x1f333;&#x1f333;&…

嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有&#xff0c;请谅解&#xff0c;保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码&#xff1a; 1 /*2 需求&#xff1a;计算n以内所有正奇数的和 ? n值通过键盘输入3 */4 #include <stdio.h>5 6 int main()7 …

HarmonyOS NEXT——奇妙的调用方式

注解调用一句话总结Extend抽取特定组件样式、事件&#xff0c;可以传递参数Style抽取公共样式、事件&#xff0c;不可以传递参数Builder抽取结构、样式、事件&#xff0c;可以传递参数BuilderParams自定义组件中传递UI组件多个BuilderParams自定义组件中传递多个UI组件 Extend…

【练习】使用DevEco Studio编写计数器案例

效果展示 默认状态 点击加号 点击减号 知识点 类型转换&#xff08;数字 和 字符串&#xff09; 字符串转数字 方法说明例子Number()字符串 直接转数字&#xff0c;转换失败返回NaN&#xff08;字符串包含非数字&#xff09; let str1: string 1.1 console.log(Number(str1)…

数论——线性同余方程、扩欧求解线性同余方程、线性组合、原根求解

线性同余方程 线性同余方程是形如 的方程&#xff0c;其中a 、b、m 为给定的整数&#xff0c;x 是未知整数。 扩欧求解线性同余方程 void mod_slover(int a, int b, int n) {int d, x, y, x0;d extend_gcd(a, n, x, y);if (b % d ! 0)cout << "no answer";…

Linux系统驱动(二)字符设备驱动

文章目录 一、ioctl函数&#xff08;一&#xff09;函数格式&#xff08;二&#xff09;ioctl命令码的组成1. 命令码的组成2. 自己封装命令码2. 内核提供了封装命令码的宏 &#xff08;三&#xff09;使用示例1. 驱动2. 应用 一、ioctl函数 Linux内核开发者想要将数据的读写和…

LabVIEW与CANopen实现自动化生产线的设备控制与数据采集

在某工厂的自动化生产线上&#xff0c;多个设备通过CANopen网络进行通信和控制。这些设备包括传感器、执行器和PLC&#xff0c;它们共同负责监测和控制生产过程中的关键参数&#xff0c;如温度、压力、速度等。为了实现对整个生产线的集中监控和管理&#xff0c;工厂决定使用La…

计算机毕业设计选题推荐-校园服务系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

小程序开发_02项目构成

一、项目的基本结构 二、小程序的页面组成部分 三、json配置文件 ① project.config.json文件 作用&#xff1a;项目的配置文件&#xff0c;用来记录对小程序开发工具所作的个性化配置 ② sitemap.json 作用&#xff1a;是否允许被微信引擎搜索,不希望被搜索dis ③ app.jso…

AI图文创作革命:10步快速掌握自动化内容生成技巧

1.背景 新媒体时代&#xff0c;内容变得非常容易传播&#xff0c;主题及内容的质量直接影响访问量&#xff0c;如果按传统方式写一篇好的文章及配图&#xff0c;至少2天。 Ai 既然有海量的数据&#xff0c;且能够自动生成图文&#xff0c;我们需要给作者提供一个工具&#xff…

XML 学习笔记

简介&#xff1a; &#xff08;1&#xff09;XML&#xff1a;可扩展性标记语言&#xff0c;用于传输和存储数据&#xff0c;而不是展示数据&#xff0c;是W3C 推举的数据传输格式。 XML的标签必须自定义&#xff0c;但是在写标签名的时候一定要有含义。 XML 只能有一个根节点…

Linux驱动----总线

总线相关 总线注册和注销总线device对象----描述设备信息&#xff0c;包括地址&#xff0c;中断号和其他的一些自定义数据注册和注销device对象----指将device注册到mybus总线 driver对象----描述设备驱动的方法&#xff08;操作地址和中断&#xff09;注册和注销driver对象---…

MySQL第3讲--数据类型和表的修改和删除

文章目录 前言数据类型数值类型整数类型浮点数和定点数 字符串类型字符类型&#xff1a;文本类型&#xff1a;二进制数据类型 日期和时间类型实例分析 表的操作添加字段修改字段删除字段修改表名删除表 DDL总结DDL数据库操作DDL表操作 前言 上一节在MySQL第2讲–关系型数据库以…