cookie、session和token

存在理由?

http是无状态的,不会记住之前的操作,无法保持登录状态->登录后的操作需要继续登录

实现机制:

1)session+cookie:用户登录时,服务器会在服务器端创建一个session用于记录用户信息,并将session_id放在cookie里面返回给用户,cookie会保留在浏览器里面,之后再向浏览器发送请求时都要带上这个cookie,服务器读取cookie里面的session_id,然后查看当前所有有效的session中是否有这个session_id,来进行身份验证。

2)token:session需要存储在服务器,庞大的用户群将给服务器带来巨大的负担,因此有了token。token同样是由服务器发放,但是存储在客户端,通过对请求加密签名的形式来进行身份验证,服务器只需解密然后比对签名

异同点:

1)cookie和token都是存储在客户端,而session存储在服务器

2)cookie和session都可进行身份验证和会话跟踪,但是token只能进行身份验证。

3)session通过session_id验证身份,而token通过解密然后比对签名

补充:

session基本上都是配合cookie使用的,但是token可以不使用cookie。因为cookie每次发送消息都需携带,增加了负担,因此如果只需进行身份验证的话,token也可以存放在Redis或本地内存,发送请求时再写到请求头就可以了。

如果只使用cookie进行身份验证,那么每次发送请求都需要携带上用户名、密码等私密信息,很不安全。所以需要结合session,采用session_id进行身份验证。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容