Token、Cookie、Session的作用及具体区别

49 篇文章 53 订阅
20 篇文章 1 订阅

 

一、作用

Token


  • 身份验证:Token用于验证用户的身份,确保用户有权限访问特定资源。

  • 授权:Token可以包含授权信息,指示用户被授予了何种权限来访问特定资源。

  • 单点登录:通过Token可以实现用户在多个系统中的单点登录,提高用户体验。

  • 无状态性:Token本身包含了用户身份信息和权限,服务器不需要保存会话状态,减轻了服务器的负担。

Cookie


  • 用户身份识别:Cookies可以用来标识和识别用户,帮助网站记住用户的登录状态和个性化设置。

  • 购物车和购买记录:在网上购物时,Cookies可以跟踪用户添加到购物车中的商品和购买记录,确保购物过程的连续性和方便性。

  • 网站分析和统计:网站使用Cookies来收集匿名的用户访问数据,如访问次数、页面浏览量等,用于网站的分析和优化。

  • 广告定向:一些广告商使用Cookies来跟踪用户在网上的活动,从而投放更加相关和个性化的广告。

Session


  • 用户身份验证和管理:Session在用户登录后可以保存用户的身份信息,以便后续的请求可以识别用户并进行相应的权限控制。

  • 数据共享:Session保存在服务端,可以跨请求共享数据,使得在同一个用户的多个请求之间能够共享数据并保持数据的一致性。

  • 数据一致性:Session的数据存储在服务端,相对于存储在客户端的Cookie来说,更加安全可靠。

  • 业务流程控制:Session可以用于控制业务流程,在不同的请求之间共享状态信息。

  • 缓存机制:服务端可以利用Session作为缓存机制,提高系统的性能和响应速度。


二、具体区别

TokenCookieSession
存储位置客户端(通常存储在浏览器的LocalStorage或SessionStorage中,也可在HTTP请求的Header中携带)客户端(存储在用户计算机或移动设备的硬盘或内存中)服务端(存储在服务器的内存中或数据库中)
安全性较高,因为Token通常包含加密信息,并且每次请求都携带,减少了被截获的风险较低,因为Cookie存储在客户端,容易被用户查看或篡改较高,因为数据存储在服务端,且可以通过HTTPS等方式加密传输
存储大小无固定限制,但通常不会太大,因为每次请求都会携带单个Cookie保存的数据不能超过4KB理论上没有限制,但过多的Session会占用服务器资源
有效期可以设置较长的时间,也可以设置为短期(如JWT Token)可以设置为长时间保持,也可以设置过期时间依赖于服务端的设置,一般客户端关闭或Session超时就会失效
跨域支持支持跨域请求,因为Token是通过HTTP请求的Header携带的跨域支持较弱,因为浏览器的同源策略限制不支持跨域,因为Session是基于服务端存储的,每个域名下的Session是独立的
无状态性是,服务器不需要保存会话状态,Token本身包含了所有必要的信息否,Cookie需要浏览器保存状态,服务器也需要在会话间保持状态信息是,但Session数据存储在服务端,服务器需要维护会话状态
应用场景移动应用、Web API、分布式系统等需要无状态认证的场景Web网站、电商网站等需要用户身份识别和会话管理的场景需要服务端存储和管理用户会话信息的场景

总结

Token、Cookie和Session在Web开发中各有其独特的作用和适用场景。Token适用于需要无状态认证和授权的场景,Cookie适用于需要用户身份识别和会话管理的场景,而Session则更适合于服务端需要存储和管理用户会话信息的场景。在实际应用中,可以根据具体需求选择合适的机制来实现用户认证和会话管理。


参考

Session详解,学习 Session对象一篇文章就够了

Session对象(超详细)Session 对象知识点总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

儒雅的烤地瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值