cookie、session、token
2021/6/12 18:27:23
本文主要是介绍cookie、session、token,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
cookie、session、token都是用来跟踪用户身份的方式。
工作原理:
1.Cookie的工作原理
(1)浏览器端第一次发送请求到服务器端
(2)服务器端创建Cookie,该Cookie中包含用户的信息,然后将该Cookie发送到浏览器端
(3)浏览器端再次访问服务器端时会携带服务器端创建的Cookie
(4)服务器端通过Cookie中携带的数据确定用户权限
2.Session的工作原理
(1)浏览器端第一次发送请求到服务器端,服务器端创建HttpSession对象,以sessionId为标识位,同时会创建一个特殊的Cookie,这个cookie中会包含sessionId
(2)然后将该Cookie发送至浏览器端
(3)浏览器端下一次向服务器端发送请求,会在请求中携带sessionId
(4)服务器端根据sessionId,去查询HttpSession对象的相应内容,如果不存在则重新创建,如果存在就可以根据数据确定用户权限。
3.token的工作原理
(1)用户通过用户名和密码发送请求。
(2)服务端验证, 返回生成的token 给客户端。
(3)客户端储存token,并且其后的每一次请求都添加token,。
(4)服务器接收到客户端的请求之后,会取出token值与数据库中的token值做对比。
对比一:如果两个 token 值相同, 说明用户登录成功过!当前用户处于登录状态!
对比二:如果没有这个 token 值, 则说明没有登录成功;
对比三:如果 token 值不同: 说明原来的登录信息已经失效,让用户重新登录。
token使得前后端分离,可以做到前后端的单独开发,使得前端在使用后端接口的时候更像一个API,既不用依赖cookie也不用依赖session保存状态的机制
cookie、session区别
1.cookie数据存放在客户的浏览器上,session数据放在服务器上
2.cookie的安全性低于session,别可以通过cookie欺诈获得你的权限和状态
3.cookie对服务器性能影响较小,session会在访问量增多时影响性能
4.cookie数据一般不超过4K,一个站点最多20个cookie,session的限制较少
所以个人建议:
将登陆信息等重要信息存放为session;
其他信息如果需要保留,可以放在cookie中。
比较
cookie :
1. cookie由服务器生成,保存在客户端浏览器。
2. 容易被劫持,不安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗。
3. cookie可以被用户禁止
4. 容量小, 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
session
1. session是由应用服务器维持的一个服务器端的存储空间, 没有对存储的数据量的限制,可以保存更为复杂的数据类型.
2. session 默认被存在在服务器的一个文件里, 但是实际中可以放在 文件、数据库、或内存中都可以。
3. 当用户量增多时,会对服务器造成较大压力。
4. Session的实现方式大多数情况用Cookie保存的,但是也可以使用URL地址重写。
5. 较安全,用户验证这种场合一般会用 session, 比如金融银行类的产品,
token
1.无状态
在客户端存储的Tokens是无状态的。基于这种无状态和不存储Session信息,负载均衡器能够将用户信息从一个服务传到其他服务器上。
2.可扩展
Tokens能够创建与其它程序共享权限的程序。
例如,能将一个随便的社交帐号和自己的大号(Fackbook或是Twitter)联系起来。当通过服务登录Twitter(我们将这个过程Buffer)时,我们可以将这些Buffer附到Twitter的数据流上(we are allowing Buffer to post to our Twitter stream)。
使用tokens时,可以提供可选的权限给第三方应用程序。当用户想让另一个应用程序访问它们的数据,我们可以通过建立自己的API,得出特殊权限的tokens。
3.跨服务器调用
只要用户有一个通过了验证的token,数据和资源就能够在任何平台(Android,ios, h5)任何服务器上被请求到。
4.安全性
可以避免cookie中的CSRF跨站请求伪造
请求中发送token而不再是发送cookie能够防止CSRF(跨站请求伪造)。即使在客户端使用cookie存储token,cookie也仅仅是一个存储机制而不是用于认证。不将信息存储在Session中,让我们少了对session操作。
token是有时效的,一段时间之后用户需要重新验证。我们也不一定需要等到token自动失效,token有撤回的操作,通过token revocataion可以使一个特定的token或是一组有相同认证的token无效。
这篇关于cookie、session、token的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01UniApp 中组件的生命周期是多少-icode9专业技术文章分享
- 2024-11-01如何使用Svg Sprite Icon简化网页图标管理
- 2024-10-31Excel数据导出课程:新手从入门到精通的实用教程
- 2024-10-31Excel数据导入课程:新手入门指南
- 2024-10-31RBAC的权限课程:新手入门教程
- 2024-10-31Svg Sprite Icon课程:新手入门必备指南
- 2024-10-31怎么配置 L2TP 允许多用户连接-icode9专业技术文章分享
- 2024-10-31怎么在FreeBSD上 安装 OpenResty-icode9专业技术文章分享
- 2024-10-31运行 modprobe l2tp_ppp 时收到“module not found”消息提醒是什么-icode9专业技术文章分享
- 2024-10-31FreeBSD的下载命令有哪些-icode9专业技术文章分享