# 《分布式IM系统》大后端平台-用户服务-第01节:用户注册与登录授权的流程设计与实现

作者:冰河
星球: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/160kDeWPn (opens new window)

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

  • 本节难度:★★☆☆☆
  • 本节重点:梳理用户的登录与注册流程,基于JWT设计并实现用户的登录授权认证流程,旨在在小伙伴们掌握JWT认证相关的技术和流程,并能够灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/160kDeWPn (opens new window)

大家好,我是冰河~~

JWT认证是一种用于身份认证的开放标准,它可以在网络应用之间传递声明信息。JWT由三部分组成:头部、载荷和签名。其中,头部包含了令牌类型和算法等元数据,载荷包含了实际要传递的信息,签名用于验证消息的完整性,被广泛应用于企业的账户认证授权中。

# 一、前言

分布式IM即时通讯系统的大后端平台本质上就是一种业务系统,大后端平台中的用户服务,无疑是用户访问整个分布式IM即时通讯系统的入口,用户访问整个分布式IM即时通讯系统的第一步,就是注册自己的账号,登录系统进行授权认证。

# 二、本节诉求

在分布式IM即时通讯系统中,用户只有登录系统后,才能进行后续的一系列操作,才能与其他用户单聊,才能在群组中实现群聊。所以,用户使用分布式IM即时通讯系统的第一步,就是要注册账号并登录进系统。

本节,就对JWT认证进行简要的概述,梳理用户的登录与注册流程,基于JWT设计并实现用户的登录授权认证流程,小伙伴们结合自身实际业务场景思考,将JWT认证授权技术灵活应用到自身实际项目中。

# 三、JWT概述

JWT(JSON Web Token)是一种用于身份认证的开放标准,它可以在网络应用之间传递声明信息。JWT由三部分组成:头部、载荷和签名。其中,头部包含了令牌类型和算法等元数据,载荷包含了实际要传递的信息,签名用于验证消息的完整性。

JWT认证的过程如下:

  • 用户提供用户名和密码进行登录验证。
  • 服务器验证用户提供的用户名和密码是否正确,并生成一个JWT令牌。
  • 服务器将JWT令牌发送给客户端,并存储该令牌的密钥并设置有效期。
  • 客户端将JWT令牌保存在本地存储或者cookie中。
  • 客户端向服务器发送请求时,在请求头中携带JWT令牌。
  • 服务器收到请求后,通过令牌中的签名验证消息的完整性,并解析载荷获取用户信息。
  • 如果令牌验证成功,服务器返回请求所需要的数据或者资源。
  • 如果令牌验证失败,则返回错误响应或者要求用户重新进行身份认证。

使用JWT认证的优点包括:

  • 无状态:由于JWT包含了所有必要的信息,因此服务器不需要存储任何会话信息。
  • 可扩展性:JWT可以包含任何类型的数据,因此可以支持多种用途。
  • 安全性:JWT使用签名来验证消息的完整性,因此可以保证数据不被篡改。
  • 互操作性:由于JWT是开放标准,因此不同的平台和语言都可以使用它进行身份认证。

# 四、注册与登录流程设计

基于JWT实现的登录授权认证功能本质上还是一种Token认证流程,大后端平台的用户服务中,注册与基于JWT实现的登录授权认证流程如图1-1所示。


可以看到,用户基于大后端平台进行注册的流程如下所示。

# 查看完整文章

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