IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> session、token、jwt 区别 -> 正文阅读

[系统运维]session、token、jwt 区别

序言

在网上看了很多博客,说法比较多,我想说下关于我自己的理解,可以简单理解他们都是为了解决 http 无状态特性产生的一些鉴权问题

问题

首先用户登录完成后,http 不能保存这个状态,后续的请求,服务器是不知道我们是否有请求的权限的,为了解决这个问题,引入了下面几种常见的技术

session

1. 通过 session 机制,相当于服务器为客户端开辟的一个存放登录信息的房间,并把钥匙返回给客户端。

2. 每个客户端访问都会带上自己的钥匙(session id),服务器收到请求后打开对应的房间,看它是否登录过,这样就达到了鉴权,也就是保存登录状态的作用

正常可能就这样用到天荒地老了,但是架不住互联网的飞速发展,下面两个问题也就必须要解决了~

缺点:

1. 存储,session 中保存的信息是占用服务器内存的,这个用户量大的话,消耗还是很多的

2. 集群,服务端如果做了负载均衡,就可能导致用户请求到某台没有保存 session 的服务器,解决这个问题

????????(1) 在所有负载服务器之间同步 session,每个服务都要保存一份完整的 session,当然会造成较大资源浪费

? ? ? ? (2) 共享 session,这个一般用第三方存储来实现,比如 redis,也? 就解决了这个问题,而且 redis 是支持集群的,比较容易扩展

token、jwt

网上很多在对比他们两个的区别啥的,其实我是觉得可以把 jwt 理解为 token 的某种实现方式(jwt 有规范,token 是自定义的,具体区别自行百度),都是为了解决session 的两个问题,下面我统称为 Token

1. 用户登录完成,服务器给客户端签发 Token。?区别来了,这时候服务器自己不存信息,而是把信息存放在 Token 中返回给客户端,后续访问客户端携带 Token

2. 服务器每次都会从 Token 中解密信息并校验是否合法,这样也完成了鉴权,是不是完美解决了 session 的问题呢? (1) 存储 (2) 集群(服务器不需要保存登录信息,只需要验证token)?

缺点:

缺点很明显,Token 过期问题 ~ ~

session 模式,用户关闭浏览器,对应的 session 也就自然过期了,下次打开重新登录,这是比较安全的

1. Token 是发放给客户端的令牌,虽然也可以设置过期时间,但是这个时间定多少比较合适呢?这是个问题,短了用户老是要登录,长了不安全

2. 而且如果两个人登录,我希望让其中一个 Token 失效,这种确实不好处理

这时候有朋友说了,上边两个都不是问题呀,1. 我也在 session 失效的时候,就删除 Token 2. 每次我都保存用户最新的 token不就行了,确实可以解决,但是这就又引入了 session 和 存储,并不是不行,只是这样就丧失了 Token 的优势(解密就可以认证,不需要引入存储和保存客户端的状态)

总结

session 和 Token 方式都是为了解决某些问题

比如一般的登录认证,我认为 session 还是有优势的,而且也可以引入 redis 来解决分布式的问题

而一些接口间的认证,则可能 Token 模式会更适合一些,具体要根据自己的场景来分析用哪种技术,并不是一定就是哪种好 ···

抱歉文笔不行,可能废话比较多,让观众老爷受累了 ~~

感谢您的阅读,如果对您有所帮助,欢迎点赞、关注、收藏!文章中有任何错误,或者您有更好的理解和建议,也欢迎和我联系!

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:49:45  更:2022-04-01 23:53:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:01:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码