Cookie、Session、token的区别

本文详细阐述了Cookie、Session和Token在保持用户登录状态中的作用。Cookie是客户端存储数据的容器,但安全性较低;Session是服务器端的会话,通过SessionID与客户端交互,减轻服务器负担;Token,特别是JWT,将用户信息加密后发送给客户端,提供更安全的认证方式。

首先要明确的是,cookie、session、token的主要作业就是在浏览器上保存用户的登录态。其实就是实现用户在网页上登录过一次后,一段时间内再次访问该网页不需要重新登陆,会实现自动登录的一个效果。

Cookie:

cookie是客户端用来存放数据的一个容器,大小大约为4K,最原始的实现保存用户登录态的方法就是使用cookie直接保存用户的用户名和密码。也就是说,在用户第一次登录的时候,我们将他的用户名和密码保存在cookie中,并设置cookie的过期时间,那么在cookie过期之前,我们每次访问这个网页,客户端就会自动把cookie中存储的用户登录信息发送给服务器,自动进行登录。

这就导致了Cookie十分不安全:黑客可以通过浏览器中的Cookie直接获得用户的用户名密码,进行非法操作。

Session:

Session其实是服务器中的一个会话,也就是服务器中保存一个客户端的域。session保存登录态其实是要结合客户端的cookie或者localStorage、sessionStorage来实现的。当用户第一次登录的时候,发送登录信息给服务器,服务器会创建一个Session,也就是一个和客户端进行会话的域。然后服务器给这个Session生成一个SessionID,里面同时生成了一系列相关配置信息,经过加密后发送给客户端。客户端用cookie来存储这个Session,同时根据服务器端给的配置信息设置过期时间。

但是使用Cookie会导致每一个用户登录时,服务器都要存放一个对应的SessionID和相关信息,那么服务器的负担会十分大,为了解决这个问题,就出现了token。

Token:

token是利用JWT技术,当用户第一次登陆时,服务器会生成一个JWT,服务器端只用保存这个JWT生成的密文,然后把JWT发送给客户端。客户端用cookie或者stroage保存这个JWT,然后设置存储过期时间。那么在有效期内,客户端只需要把JWT发送给服务器,服务器就知道用户的登录信息了。因为在这个技术中,JWT就像一个令牌(token)一样,所以这种方法被叫做token。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值