当前位置: 首页 > news >正文

用户登录权限校验 JWT【详解】

JWT (json web token)是当前最流行的用户登录权限校验(用户认证鉴权)方案。
官网 https://jwt.io/

JWT 的工作流程

在这里插入图片描述

  1. 客户端填写账号密码访问登录接口 login,将账号密码传给服务端
  2. 服务端验证账号密码是否正确,若正确,则生成 token ,并将其返回给客户端
  3. 客户端将登录接口 login 返回的 token 存储在客户端本地
  4. 客户端访问业务接口(如获取当前登录用户信息 user/current)时,将 token 放入 header 中传给服务端,键名为 Authorization ,值为 Bearer 后加空格再加 token。
  5. 服务端验证 token 是否正确,若正确,则将数据(如当前登录用户信息)返回给客户端。

JWT 的 token 加密原理

JWT 的 token 由三部分组成

  1. Header:JSON对象,描述 JWT 的元数据,加密算法以及类型
  2. Payload:JSON对象,存放数据需要传递的数据
  3. Signature:对前两部分的签名,防止数据篡改。需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。

在这里插入图片描述
如上图,可在官网首页中测试加密和解码 https://jwt.io/

JWT 的优点

  • token 是无状态的(stateless),服务器不需要记录任何信息,不占用内存
  • 多进程,多服务器集群没有影响,易于扩展
  • 假如不记录在 cookie 中,没有跨域的影响
  • 和服务器端解耦,任何设备都可以生成token。

JWT 的缺点

  • 无法废弃,没有办法对快速对已经登录的用户做处理。
  • 空间更大,所有数据是通过 base64进行编码的,会随着数据量的增大而变大。

相关文章:

  • php laravel开发的个人博客源码分享,支持适配移动端附截图
  • 基于模糊认知图谱和遗传算法的龋齿度检测(Matlab代码实现)
  • 【表面缺陷检测】基于yolov5的PCB表面缺陷检测(附代码)
  • 主动学习(Active Learning)简介综述汇总以及主流技术方案
  • 详解KMP
  • 基于QD求解法的二分类SVM仿真
  • 【音视频】1、图像、视频编码、网络协议超详细介绍
  • 基于SSM实现高校应届生就业管理系统
  • 【2020-10-26】JS逆向之同盾滑块
  • CCPC 2021桂林铜牌题G(二分),D(贪心)
  • thinkphp6+layui BBS社区论坛系统源码分享,支持适配移动端附截图
  • 链路状态路由协议 OSPF (二)
  • 大前端进阶:vue
  • CNN基于肺部CT数据开发实现肺部疾病识别系统
  • Laravel框架中运用单例模式
  • 2017前端实习生面试总结
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • java2019面试题北京
  • js算法-归并排序(merge_sort)
  • Laravel 实践之路: 数据库迁移与数据填充
  • leetcode98. Validate Binary Search Tree
  • Median of Two Sorted Arrays
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Redux系列x:源码分析
  • scala基础语法(二)
  • session共享问题解决方案
  • 浮现式设计
  • 使用parted解决大于2T的磁盘分区
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 一文看透浏览器架构
  • 赢得Docker挑战最佳实践
  • 用jquery写贪吃蛇
  • 优秀架构师必须掌握的架构思维
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​什么是bug?bug的源头在哪里?
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #define与typedef区别
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (31)对象的克隆
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (差分)胡桃爱原石
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (原創) 未来三学期想要修的课 (日記)
  • .NET Core中Emit的使用
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET大文件上传知识整理
  • .NET的微型Web框架 Nancy
  • @Async注解的坑,小心