# 《Seckill秒杀系统》第11章:用户登录授权认证流程的设计与实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/10yalkics (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★★☆☆
  • 本章重点:梳理用户登录流程,基于JWT设计并实现用户的登录流程,旨在让小伙伴们掌握JWT认证相关的技术和流程。
  • 课程视频:https://t.zsxq.com/10yalkics (opens new window)

大家好,我是冰河~~

目前,很多企业都在使用JWT进行用户的登录授权认证,那JWT到底是如何使用的呢?它比一般的登录授权认证有哪些优势呢?还是老样子,我们不直接回答问题,小伙伴们从实战中认真领悟。

# 一、前言

秒杀系统本质上还是一种业务系统,在正式开发业务系统之前,需要梳理清楚业务系统的需求和流程,在前面的文章中,已经处理清楚系统的需求、业务流程和技术流程,并搭建了相应的基础环境和研发环境,也基于DDD设计原则快速搭建了秒杀系统项目,并对其进行了简单的测试。本章开始,就可以正式进入研发阶段了。

# 二、本章诉求

一般情况下,在秒杀系统的设计中,只有用户登录系统并拥有秒杀的资格,才能对秒杀商品进行抢购下单,期间,还会经过一系列的验证来校验最终是否能下单成功。这里,一个很重要的前提就是用户必须要登录系统,才能抢购下单。所以,正式研发秒杀系统的第一步就是设计和实现用户的登录流程。

# 三、登录流程设计

基于JWT实现的登录授权认证功能本质上还是一种Token认证流程,在秒杀系统中,基于JWT实现的登录授权认证流程如图11-1所示。


由图11-1可以看到,基于JWT设计的简单登录授权认证流程如下所示。

(1)客户端向服务端发送用户名和密码来提交用户认证。

(2)服务端对客户端提交的用户名和密码进行认证,认证通过后,会生成JWT Token,并将JWT Token返回给客户端。

(3)后续客户端在访问服务端接口时,每次请求都会在请求头中添加JWT Token。

(4)服务端会拦截请求,并对请求头中的JWT Token进行验证,如果验证成功,则执行具体业务逻辑,并向客户端返回正确的结果数据。如果验证失败,则向客户端返回错误信息。

(5)客户端根据服务端返回的是正确的结果数据还是错误的信息来执行不同的业务流程,如果客户端从服务端接收到的是正确的结果数据,则进行展示。如果客户端从服务端接收到的是错误的信息,则展示错误信息并返回登录页面。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码