1. 流程图
2.1 发送验证码
2.2 验证码登录并返回Token
2.3 携带Token访问
2. 架构图
只有网关和认证中心,不画了偷懒,略
3. 详细流程
3.1 工程详情
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 基础包
-
Redis前缀: RedisPrefix
-
状态码: HttpStatusEnum
-
性别枚举: SexEnum
-
昵称和姓名切换开关: ShowWhichName
-
返回值枚举: ResponseStatusEnum
-
通用类: Constant
3.2.2.3 异常处理
-
自定义异常: XiaoQiuException
-
封装异常抛出: GraceException
-
全局异常处理: GlobalExceptionHandler
-
统一返回: 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
- 用户Do: Users
4. VO
用户信息: UsersVO
3.2.4 API模块
-
短信拦截器:SMSInterceptor
-
拦截器配置: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 认证中心
- 入口:PassportController
- 通行服务:PassPortServiceImpl
- 用户服务:UsersServiceImpl
代码仓库:https://gitee.com/yishuai10/worker-dev
分支:one_click_login