首页 > 其他 > 详细

session与token的区别

时间:2020-02-16 17:20:08      阅读:72      评论:0      收藏:0      [点我收藏+]

一、session的状态保持及弊端

(1)当用户第1次通过浏览器使用用户名和密码访问服务器时,服务器对用户名和密码进行验证。

(2)验证成功后,在服务器端生成并保存session数据,通过cookie向浏览器返回sessionId,浏览器将sessionId记录在cookie中。

(3)当浏览器再次访问时,会默认携带cookie中的sessionId,服务器校验sessionId存在或有效,如果存在就保持当前会话,不需要重新登录,返回浏览器所需数据。

技术分享图片

好处:

session的主要实现是:用户登录后保持会话信息,使得打开不同页面不需要重新登录。

如果会话超时,或者服务器重启(如果session存在服务内存中),那么要求用户重新登录,这也是自动登录的由来。

弊端:

1、通常session是存储在内存中的,用户过多时,服务器压力会增大。

2、存在安全问题,CSRF跨站伪造请求攻击。

session是基于cookie进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。

3、扩展性不强,无法直接支持分布式服务部署。

 

二、token(令牌)认证机制

(1)客户端登录成功后,服务器会对userId和userId对应的用户信息进行加密,加密后的字符会在响应主体中{token:‘字符串‘}返回给客户端,但并不对token进行保存

(2)客户端可以通过cookie或sessionStorage或localStorage对token进行存储。

(3)客户端再次请求时不会默认携带,需要在请求头中添加认证字段Authorization并携带token信息,服务器端对token信息进行解密,解密完成后进行用户数据的查询,如果查询到,则认证通过,实现状态保持。

所以,即时有了多台服务器,服务器也只是做了token的解密和用户数据的查询,它不需要在服务端去保留用户的认证信息或者会话信息,这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利,解决了session扩展性的弊端。

技术分享图片

 

session与token的区别

原文:https://www.cnblogs.com/shijianchuzhenzhi/p/12317439.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!