文章目录

  • 1、什么是 JWT
  • 2、JWT 能做什么
  • 3、Session认证 和 JWT认证 对比
  • 4、JWT 结构

1、什么是 JWT

JWT简称JSON Web Token,也就是通过JSON格式作为Web中的令牌,用于在各方之间安全的将信息以JSON格式传输,在传输过程中可以进行数据加密、签名等操作

JWT最重要的作用:生成加密 Token

2、JWT 能做什么

  1. 授权登录

这是最常用的方法。一旦用户登录,每个请求都会包括JWT,允许用户访问该Token允许的路由、服务、资源。单点登录是当今广泛使用JWT的一个场景,因为它开销小且不同领域可以轻松使用

  1. 信息交换

JWT是各方安全传输数据的好方式,因为可以对JWT(Token)进行签名,所以您可以确保发件人是他们想要的人。此外,由于签名是使用表头和有效负载计算,因此还可以验证内容是否遭到篡改

3、Session认证 和 JWT认证 对比

  1. 基于传统 Session 认证

我们知道,HTTP请求是无状态请求,而这就意味着如果用户已经登陆成功了,下次再请求还需要进行一次用户认证。因为HTTP协议根本不知道是哪个用户发出的请求。
所以为了能识别哪个用户发出的请求,我们只能再服务器中存储一份用户登陆的信息(SessionID),这份登录信息会传递给浏览器,让其保存为Cookie,下次请求发送时,就可以下次请求携带Cookie(里面有SessionID),这样就能识别请求来自于哪个用户,这就是基于session认证

  1. 基于 JWT 认证

4、JWT 结构

组成:Header.Payload.Signature

  1. 标头(Header)
  2. 有效负载(Payload)
  3. 签名(Signature)

Header:
通常由两部分组成:令牌类型 + 签名算法(例如 HMAC SHA256)。它会使用 Base64 编码组成 JWT 结构第一部分

注意:Base 64 并不是一种加密过程

{"alg" : "HS256","typ" : "JWT"
}

Payload:
其中包含声明,声明是有关实体和其他数据。同样他会使用 Base 64 编码组成

{"sub" : "1234567890","name" : "John Doe","admin" : true
}

Signature:

谈谈对 JWT 理解相关推荐

  1. 第二季:5公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自旋锁【Java面试题】

    第二季:5值传递和引用传递[Java面试题] 前言 推荐 值传递 说明 题目 24 TransferValue醒脑小练习 第二季:5公平锁/非公平锁/可重入锁/递归锁/自旋锁谈谈你的理解?请手写一个自 ...

  2. 软件测试两年半的我,谈谈自己的理解

    软件测试两年半的我,谈谈自己的理解 从2020年7月毕业,就成为一名测试仔.日子混了一鲲年,感觉需要好好梳理一下自己的职业道路了,回顾与总结下吧. 一.测试的定位 做事嘛,搞清楚自己的定位很重要. 要 ...

  3. 点击页面上的按钮后更新TextView的内容,谈谈你的理解?(阿里面试题 参照Alvin笔记 Handler源码解析)

    阿里面试题: 点击页面上的按钮后更新TextView的内容,谈谈你的理解? 首先,这个一个线程间通信的问题,可以从Handler的角度进行解释,可以从五个角度分析这个问题: 1.需要在主线程更新UI, ...

  4. 为什么传值时加号变成了空格_为什么中英文字间距不一样?我想谈谈我的理解...

    目录 中英文组成对比 文字之间的间隔 为什么字母不具有语义 效率的背后 利用字间距稀释文字 字间距只是 Typography 的冰山一角 Matrix 精选 Matrix 是少数派的写作社区,我们主张 ...

  5. 谈谈自己的理解:python中闭包,闭包的实质

    闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内 ...

  6. 3层b+树索引访问磁盘次数_【112期】面试官:为什么选择B+树作为数据库索引结构?谈谈你的理解

    本文同步Java知音社区,专注于Java 阶段汇总集合:++小Flag实现,一百期面试题汇总++ 背景 首先,来谈谈B树.为什么要使用B树?我们需要明白以下两个事实: [事实1] 不同容量的存储器,访 ...

  7. python装饰器 稀里糊涂_谈谈自己的理解:python中闭包,闭包的实质

    闭包这个概念好难理解,身边朋友们好多都稀里糊涂的,稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下,如果在一个函数的内部定义了另一个函数,外部的我们叫他外函数,内 ...

  8. 【java基础】-谈谈对面向对象理解

    一 前言 本篇文章的核心知识如下,主要是帮助大家更好的理解面向对象编程: 二面向对象VS面向过程 2.1 面向过程编程 面向过程编程(Process Oriented Programming )其意指 ...

  9. 线程池用过吗?ThreadPoolExecutor谈谈你的理解? —— 为什么用线程池?优势?|| 线程池如何使用?

    为什么用线程池?优势? 线程池如何使用?

  10. JAVA面试题------------final 关键字是干什么用的?谈谈你的理解。

    final 是 Java 中的关键字,它表示的意思是不可变的,在 Java 中,final 主要用来: 修饰类,final 修饰的类不能被继承,不能被继承的意思就是不能使用 extends 来继承被 ...

最新文章

  1. C++ Primer 5th笔记(9)chapter9 顺序容器 forward_list
  2. python三菱_三菱机器人melfarxm.ocx控件的Python使用,MelfaRxMOCX,python,用法
  3. Linux学习总结(27)——CentOS7及以上系统的systemctl命令使用介绍
  4. 移除元素所有事件监听_前端日记—DOM 事件机制和事件委托
  5. 防止电子眼拍到车牌的秘籍
  6. 手机mtkcdc端口如何开启_联想手机MTK线刷设置PreLoader端口的方法
  7. x轴z轴代表的方向图片_x轴y轴z轴代表的方向_x轴y轴z轴代表的方向图
  8. IntelliJ IDEA 2017 提示“Unmapped Spring configuration files found.Please configure Spring facet.”解决办法
  9. U-Net在2022年相关研究的论文推荐
  10. 使用w查看系统负载 vmstat命令 top命令 sar命令 nload命令
  11. cmake取消宏定义_CMake基本使用
  12. hdu 5234 Happy birthday 背包 dp
  13. Java+coolq实现QQ机器人
  14. Word文件的只读模式没有密码怎么退出?
  15. Linux常用命令——pstack命令
  16. cad高程测绘图lisp_已知CAD中的高程测绘图,很多点,如何求出所有高程的平均值呢?难道只能用计算器一个一个的相加来算吗?...
  17. RTX 4090来了!显卡换新,驱动别拉胯
  18. Android文件系统分析
  19. VNC Viewer 远程 Unable to connect to VNC Server using your chosen securitysetting. 问题解决
  20. C#将Excel数据导入到SQL server数据库

热门文章

  1. Memcached damo
  2. TCP-IP学习笔记11--无线通信- 无线通信的种类 点对点通信协议
  3. java外卖项目介绍_JavaWeb网上订餐系统项目
  4. 谢耳朵获艾美奖最佳男主角 三夺视帝感谢男友
  5. swift subscript scraps
  6. Harvard (name and date) 论文引用格式
  7. 每日一题系列:考拉有n个字符串,任意两个字符串长度都是不同的。考拉最近学习到两种字符串的排序方法
  8. 一些无添加剂的日常食用品、洗护用品的价格(感谢飞哥)
  9. 计算机无法关机 总是自动启动不了怎么办,电脑不能关机,小编教你电脑关机后总是重启怎么办...
  10. 三维重建笔记_基于图像的大规模场景三维建模overview