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

news2025/7/6 2:08:58

文章目录

    • 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: true
  token-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: yaml
      discovery:
        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: yaml
      discovery:
        enabled: true # 启用服务发现
        server-addr: # Nacos地址
3.启动测试,注册成功

image-20240604133529421

4.鉴权微服务及刷题微服务网关配置
1.application.yml 配置网关
# 请求到auth模块的规则是:GateWay的ip+端口号/auth/上下文路径+资源路径,而/auth的前缀会在真正转发的时候被去掉 也就是真正请求的完整路径是:GateWay的ip+端口号/上下文路径+资源路径
- id: auth
  uri: lb://sub-club-auth
  predicates:
    - Path=/auth/**
  filters:
    - StripPrefix=1
# 请求到subject模块的规则是:GateWay的ip+端口号/subject/上下文路径+资源路径,而/subject的前缀会在真正转发的时候被去掉 也就是真正请求的完整路径是:GateWay的ip+端口号/上下文路径+资源路径
- id: subject
  uri: lb://sub-club-subject
  predicates:
    - 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.coloradmin.cn/o/1977704.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当AIGC走进温室大棚:AI+“种菜“的前世今生

&#xff08; 于景鑫 国家农业信息化工程技术研究中心&#xff09; 近年来,人工智能生成内容(AIGC)技术引发业界广泛关注。从NLP领域的GPT-3到CV领域的Stable Diffusion,AIGC展现了惊人的创造力,正在重塑人们的工作和生活方式。与此同时,农业领域也正经历着数字化、智能化的深刻…

Golang环境篇

一、Golang环境篇 一&#xff09;go简介 1、Golang定义 Go语言是Google于2009年推出的一门新的系统编程语言。 2、特性&#xff1a; 静态编译内存分配&#xff1a;Go 选择了 tcmalloc&#xff0c;它本就是为并发而设计的高性能内存分配组件。垃圾回收&#xff1a;每次升级&…

基于51单片机的汽车灯控制器proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1YrwCUQIKwdth1N2UsUtSRA 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectro…

基于Java的网络考试系统的设计与实现

点击下载源码 基于Java的网络考试系统的设计与实现 摘 要 科技在进步&#xff0c;人们生活和工作的方式正发生着改变&#xff0c;不仅体现在人们的衣食住行&#xff0c;也体现在与时俱进的考试形式上。以前的考试需要组织者投入大量的时间和精力&#xff0c;需要对考试的试题…

Java线程池原理剖析和应用指南

目录 Java线程池详解一、Java线程池简介池化思想池化思想的优点 二、线程池的实现原理分析实现线程池需要考虑哪些问题&#xff1f;线程池的简单使用示例线程池原理的简单图示 三、Executor详解Executor简介Executor框架的继承结构总结ExecutorExecutorService 四、ThreadPoolE…

免费自动化AI视频剪辑工具

下载地址&#xff1a;https://pan.quark.cn/s/3c5995da512e FunClip是一款完全开源、本地部署的自动化视频剪辑工具&#xff0c;通过调用阿里巴巴通义实验室开源的FunASR Paraformer系列模型进行视频的语音识别&#xff0c;随后用户可以自由选择识别结果中的文本片段或说话人&…

【Python系列】Python 协程:并发编程的新篇章

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

浪潮信息智算新突破:高密低耗风冷仓问世

浪潮信息与四川省天府云数据科技有限责任公司&#xff08;简称能投天府云&#xff09;强强联手&#xff0c;推出国内首款42kW智算风冷算力仓&#xff0c;该方案由浪潮信息深度参与研发&#xff0c;单机柜AI服务器部署能力跃升至传统机柜6倍以上&#xff0c;实现了风冷单机柜功率…

蚂蚁0511笔试-选择题

按照先序遍历确认父节点&#xff0c;再通过中序遍历划分左右子树。重复。 第二范式&#xff08;2NF&#xff09;确实要求非主属性完全依赖于候选键&#xff08;不一定是主键&#xff0c;因为主键只是候选键的一个特例&#xff09; 第一范式&#xff08;1NF&#xff09;要求数据…

基于python的旅游可视化系统(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;原生小程序开发&#xff0c…

星纪魅族双轮驱动遇阻:AI手机与造车梦能否照进现实?

在科技行业风起云涌的浪潮中&#xff0c;星纪魅族近期的一系列动作引起了广泛关注。从高层换血到全面押注AI&#xff0c;再到宣布造车计划&#xff0c;每一步都显得雄心勃勃&#xff0c;但深入剖析后不难发现&#xff0c;其未来发展之路实则布满荆棘。 星纪魅族选择“All in AI…

OD C卷 - 园区参观路径

园区参观路径&#xff08;100&#xff09; 有一个矩形园区&#xff0c;从左上角走到右下角&#xff0c;只能向右、向下走&#xff1b;共有多少条不同的参观路径&#xff1b; 输入描述&#xff1a; 第一行输入长度、宽度 后续每一行表示 对应位置是否可以参观&#xff0c;0可…

【初学人工智能原理】【12】循环:序列依赖问题

前言 本文教程均来自b站【小白也能听懂的人工智能原理】&#xff0c;感兴趣的可自行到b站观看。 代码及工具箱 本专栏的代码和工具函数已经上传到GitHub&#xff1a;1571859588/xiaobai_AI: 零基础入门人工智能 (github.com)&#xff0c;可以找到对应课程的代码 正文 对于…

V.PS德国VPS详细测评

V.PS的德国机房位于法兰克福&#xff0c;默认接入电信CN2 GIA、联通CUII网络&#xff0c;针对中国大陆进行路由优化处理的。而且是强制移动走联通的CUII链路&#xff0c;确保三网都处在轻负载的网络环境下。 CPU是Intel Xeon Gold 6133 &#xff0c;启用了BBR&#xff0c;归属德…

Harbor系列之9:清理服务

清理服务 当从 Harbor 删除镜像时&#xff0c;空间不会自动释放。必须进行垃圾清理&#xff0c;才能从文件系统中彻底释放空间。 1. 垃圾清理 使用具有 Harbor 系统管理员权限的帐户登录 Harbor 界面。 选择系统管理 > 清理服务&#xff0c;点击立即清理垃圾&#xff1a;…

SAP MM学习笔记 - 豆知识02 - MR21 修改物料原价,MM02 修改基本数量单位/评价Class,MMAM 修改物料类型/评价Class

上一章讲了一些豆知识。比如 - MM50 批量扩张品目 - XK05/06 Block/消除供应商 - MM06/MM16 品目消除 - SE11/SE16/SE16/SE16N/SE16H/DB02 等查看常用的操作Table和数据的T-code SAP MM学习笔记- 豆知识01 - MM50 批量扩张&#xff0c;XK05/XK06 Block/消除供应商&#xf…

中国AI PC行业研究报告

核心摘要&#xff1a; 2020-2023年中国笔电出货量呈下降趋势&#xff0c;PC厂商亟需从产品形态、软硬技术、需求场景等角度寻求新的增长机会。而随着大模型、生成式AI技术的到来&#xff0c;其强大的数据处理、学习泛化与内容生成能力&#xff0c;高质效加速了各行各业人工智能…

万户 ezOFFICE 协同管理平台 getAutoCode接口SQL注入漏洞复现 [附POC]

文章目录 万户 ezOFFICE 协同管理平台 getAutoCode接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现0x06 修复建议万户 ezOFFICE 协同管理平台 getAutoCode接口SQL注入漏洞复现 [附POC] 0x01 前言 免…

书生大模型实战营——入门岛第1关

创建开发机 先在InternStudio平台创建开发机&#xff1a; SSH端口映射 点击SSH连接&#xff0c;复制登录命令&#xff1a; 本地打开powershell&#xff0c;粘贴登录命令&#xff0c;并在输入密码的地方粘贴密码&#xff0c;登录成功。 配置SSH密钥 使用RSA算法生成密钥&…

Java与模式及其应用场景知识点分享(电子版)

前言 Java 编程语言自1995年问世以来&#xff0c;其成功好像任何编程语言都无法媲美。生逢其时(互联网的兴起)固然是一方面的原因&#xff0c;而Java吸收总结了前人的经验教训&#xff0c;反映了最新技术(the state ofthe art)&#xff0c;对其受到欢迎和采用&#xff0c;恐怕…