| |
|
开发:
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 不能保存这个状态,后续的请求,服务器是不知道我们是否有请求的权限的,为了解决这个问题,引入了下面几种常见的技术 session1. 通过 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 模式会更适合一些,具体要根据自己的场景来分析用哪种技术,并不是一定就是哪种好 ··· 抱歉文笔不行,可能废话比较多,让观众老爷受累了 ~~ 感谢您的阅读,如果对您有所帮助,欢迎点赞、关注、收藏!文章中有任何错误,或者您有更好的理解和建议,也欢迎和我联系! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |