1. 流程图

2.1 发送验证码

image-20241023232051854

2.2 验证码登录并返回Token

image-20241023232213627

2.3 携带Token访问

image-20241023232254294

2. 架构图

只有网关和认证中心,不画了偷懒,略

3. 详细流程

3.1 工程详情

image-20241023232650437

3.2 依赖

3.2.1 父工程

3.2.1.1 pom

<modules>
    <!--
      worker-common: 通用工程,管理工具类、枚举类、异常类、常用属性类、资源类
      worker-pojo: 所有实体类, pojo、bean、entity、bo、vo、dto
      worker-api: web接口(应用)的公用依赖
      service-gateway-8000: 网关服务
      service-auth-8001: 认证服务
    -->
    <module>worker-common</module>
    <module>worker-pojo</module>
    <module>worker-api</module>
    <module>service-gateway-8000</module>
    <module>service-auth-8001</module>
  </modules>

3.2.2 common模块

3.2.2.2 基础包

  1. Redis前缀: RedisPrefix

  2. 状态码: HttpStatusEnum

  3. 性别枚举: SexEnum

  4. 昵称和姓名切换开关: ShowWhichName

  5. 返回值枚举: ResponseStatusEnum

  6. 通用类: Constant

3.2.2.3 异常处理

  1. 自定义异常: XiaoQiuException

  2. 封装异常抛出: GraceException

  3. 全局异常处理: GlobalExceptionHandler

  4. 统一返回: R

3.2.2.4 工具类

3.2.2.4.1 脱敏工具类: DesensitizationUtil
3.2.2.4.2 提取用户IP工具类: IPUtil
3.2.2.4.3 JWT Token生成工具类: JwtUtils
3.2.2.4.4 日期操作工具类: LocalDateUtils
3.2.2.4.5 Redis 操作工具类: RedisOperator
3.2.2.4.6 发送短信工具类: SMSUtils

3.2.3 POJO模块

2. BO

1.1 获取短信Bo: GetSmsBo

1.2 登录Bo: LoginSmsBo

3. DO

  1. 用户Do: Users

4. VO

用户信息: UsersVO

3.2.4 API模块

  1. 短信拦截器:SMSInterceptor

  2. 拦截器配置:InterceptorConfig

3.2.5 网关配置

server:
  port: 8000
  tomcat:
    uri-encoding: UTF-8
    max-swallow-size: 1024

spring:
  application:
    name: gateway-service
  config:
    import: "optional:classpath:application.yml" # 用本地的文件,不用nacos的
  cloud:
    nacos:
      config:
        import-check:
          enabled: false
      discovery:
        server-addr: 192.168.0.250:8848
        username: nacos
        password: nacos
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: userRoute
          uri: lb://user-service
          predicates:
            - Path=/user/**
        - id: companyRoute
          uri: lb://company-service
          predicates:
            - Path=/company/**
        - id: authRoute
          uri: lb://auth-service
          predicates:
            - Path=/auth/**,/passport/**

3.2.6 认证中心

  1. 入口:PassportController
  2. 通行服务:PassPortServiceImpl
  3. 用户服务:UsersServiceImpl

代码仓库:https://gitee.com/yishuai10/worker-dev
分支:one_click_login