企业认证与安全体系(四):企业登录认证流程全解析——JWT、Redis、Spring Security 如何协同工作?

上一篇我们讲了:

《企业认证与安全体系(三):一篇讲透 JWT 原理与企业级实践》

我们已经知道:

  • JWT 是什么
  • JWT 为什么无法篡改
  • JWT 为什么无法主动失效
  • Redis 为什么会出现在认证体系里
  • 企业为什么采用双 Token 机制

但问题来了:

在真实企业项目中:

复制代码
JWT
Redis
Spring Security
Gateway

这些东西到底是什么关系?

很多开发学完之后:

会一种感觉:

复制代码
JWT会了

Redis也懂了

Spring Security也听过

但是不知道它们到底怎么串起来

今天我们就从工程视角,

通过一次真实登录流程,

彻底讲透:

企业认证体系全景图


一、先看整体架构

我们先不看代码。

先建立全局认知。

一个典型企业项目:

复制代码
Android / iOS / Web
          │
          ▼
       Gateway
          │
          ▼
 Spring Security
          │
          ▼
         JWT
          │
          ▼
        Redis
          │
          ▼
      Controller
          │
          ▼
       Service

很多人第一次看 会觉得:

复制代码
怎么这么多组件?

实际上:它们职责完全不同。


二、每个组件负责什么

先记住一句话:

不同组件解决不同问题


JWT负责:

复制代码
我是谁

Redis负责:

复制代码
我还能不能访问

Spring Security负责:

复制代码
认证框架

Gateway负责:

复制代码
统一入口

简单理解:

组件 职责
JWT 身份认证
Redis 会话控制
Spring Security 认证框架
Gateway 流量入口

三、一次登录到底发生了什么

用户 输入:

复制代码
账号
密码

点击登录。


流程:

复制代码
客户端
    │
    ▼
POST /login
    │
    ▼
Spring Security
    │
    ▼
校验用户名密码
    │
    ▼
生成JWT
    │
    ▼
生成RefreshToken
    │
    ▼
Redis保存RefreshToken
    │
    ▼
返回客户端

这里:

Spring Security负责:

复制代码
账号密码认证

JWT负责:

复制代码
后续接口访问

Redis负责:

复制代码
保存会话

四、登录成功后客户端拿到了什么

通常 服务端返回:

复制代码
{
  "accessToken":"xxxxx",
  "refreshToken":"yyyyy"
}

含义:

AccessToken:

复制代码
访问接口

RefreshToken:

复制代码
刷新AccessToken

有效期通常:

复制代码
AccessToken
30分钟

RefreshToken
7天

五、一次接口请求发生了什么

例如:

获取用户信息:

复制代码
GET /user/info

客户端:

携带:

复制代码
Authorization: Bearer xxxxxx

请求进入:

复制代码
Gateway

然后:

复制代码
Spring Security Filter链

然后:

复制代码
JWT校验

流程:

复制代码
客户端
    │
Bearer Token
    ▼
Gateway
    │
    ▼
JwtFilter
    │
    ▼
解析JWT
    │
    ▼
验证签名
    │
    ▼
检查是否过期

如果失败:

直接:

复制代码
401 Unauthorized

如果成功:进入下一步。


六、SecurityContextHolder 是什么时候出现的

JWT验证成功后:

Spring Security会创建:

复制代码
Authentication

对象。


可以理解成:

复制代码
当前登录用户

例如:

复制代码
userId = 1001

username = admin

role = ADMIN

然后:

放入:

复制代码
SecurityContextHolder

里面。


此时:

系统已经知道:

复制代码
当前请求是谁

了。


所以后续:

Controller:

复制代码
getCurrentUserId()

就能直接拿到:

复制代码
1001

七、Redis 在哪里发挥作用

很多人以为:

JWT验签成功:

就结束了。

实际上:

企业里往往还会:

查 Redis


例如:

JWT:

复制代码
userId = 1001

然后:

检查:

复制代码
login:user:1001

是否存在。


存在:

复制代码
允许访问

不存在:

复制代码
401

为什么?

因为:

JWT 无法主动失效


而 Redis 可以。


所以:

企业真实流程:

复制代码
JWT认证
      +
Redis会话检查

八、一次自动续签发生了什么

假设:

AccessToken:

复制代码
30分钟

到期。


请求接口:

复制代码
401 Unauthorized

客户端发现:

复制代码
AccessToken失效

自动调用:

复制代码
POST /refresh

携带:

复制代码
RefreshToken

服务端:

检查 Redis。


合法:

生成:

复制代码
新AccessToken

返回客户端。


客户端:

重新请求原接口。


整个过程:

复制代码
用户无感知

九、一次强制下线发生了什么

管理员:

点击:

复制代码
踢下线

服务端:

删除:

复制代码
login:user:1001

此时:

用户手机里的JWT:

其实还在。


但是:

下次请求:

复制代码
JWT验签成功

之后:

Redis检查失败。


直接:

复制代码
401

实现:

强制下线


十、为什么企业喜欢这种方案

因为:

JWT:

解决:

复制代码
身份认证

Redis:

解决:

复制代码
会话管理

Spring Security:

解决:

复制代码
认证流程管理

Gateway:

解决:

复制代码
统一入口

职责清晰。

扩展方便。


十一、真实企业认证链路全景图

到这里,

你应该已经能把整个认证体系串起来了。

复制代码
用户登录
    │
    ▼
Spring Security认证账号密码
    │
    ▼
生成JWT
    │
    ▼
生成RefreshToken
    │
    ▼
Redis保存RefreshToken
    │
    ▼
返回客户端

后续访问:

复制代码
客户端
    │
Bearer Token
    ▼
Gateway
    │
    ▼
JwtFilter
    │
    ▼
JWT验证
    │
    ▼
Redis检查
    │
    ▼
SecurityContextHolder
    │
    ▼
Controller
    │
    ▼
Service

这就是:

企业认证体系最经典的架构


最终核心理解

很多开发学习认证体系时:

容易把:

复制代码
JWT
Redis
Spring Security
Gateway

看成四个独立知识点。

实际上:

它们是:

一条完整链路

JWT负责:

复制代码
身份认证

Redis负责:

复制代码
会话生命周期管理

Spring Security负责:

复制代码
认证框架

Gateway负责:

复制代码
统一鉴权入口

它们共同组成:

企业级认证与授权体系


下篇预告

下一篇我们继续:

《企业认证与安全体系(五):Spring Security + JWT + Redis 企业级认证实战》

真正进入代码层面:

  • SecurityConfig 如何配置
  • JwtAuthenticationFilter 如何实现
  • OncePerRequestFilter 为什么必须用
  • 登录接口如何生成 JWT
  • Redis 如何管理 RefreshToken
  • 自动续签如何实现
  • 强制下线如何实现

彻底实现一套:

企业级登录认证系统。

相关推荐
愤怒的苹果ext1 小时前
Spring Boot Redis Stream队列
spring boot·redis·消息队列·stream
小江的记录本2 小时前
【Spring AI】Spring AI中RAG误触发与系统提示词泄露问题解决方案(完整版+代码方案)
java·人工智能·spring boot·后端·python·spring·面试
wb043072012 小时前
食安大检查——从阿明餐厅的突击检查,看安全架构的六大防线
安全·安全架构
MageGojo2 小时前
短链还原 API 怎么接入:展开跳转链路、查看状态码和最终落地页
数据库·redis·缓存
我是一颗柠檬2 小时前
【Redis】字符串与哈希Day3(2026年)
数据库·redis·后端·database
不灭锦鲤3 小时前
网络安全第113天
安全·web安全
IT菜鸟程3 小时前
【银河麒麟V10】OpenSSH安全加固指南:源码编译升级至9.8p1版本
安全
阿昭L3 小时前
Windows认证和安全对象的基本概念
windows·安全
逸Y 仙X3 小时前
文章五:Elasticsearch安全通信
java·大数据·安全·elasticsearch·搜索引擎·全文检索·jenkins