cookie,session,token的区别

cookie、session、token

什么是cookie
1.http是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,
服务端不会保存任何会话信息)
2.cookie 存储在客户端:cookie是服务端发送到客户端的一小块数据,它会在下一次向
同一服务器发起请求时被携带并且发送到服务器
3.cookie是不可跨域的:绑定单一域名、一级域名与二级域名之间允许共享使用(靠的是
domin)
4.格式键值对

什么是Session

session是另一种记录服务器和客户端会话状态的机制
session是基于cookie实现的,session存储在服务器端,sessionId会被保存在cookie中

session的认证流程:
1.第一次访问的时候,客户端发送请求,根据用户信息生成一个session,保存在服务端,
2.将session的唯一标识sessionId返回到客户端
3.客户端将sessionId保存到cookie中,同时记录这个sessionId对应那个域名
4.当第二次访问时侯,浏览器会自动判断该域名是否有cookie信息,如果有会自动将cookie
发送给服务器,服务端会自动在cookie中获取sessionId,再根据sessionId查找对应的
session信息,如果没有找到说明还没有登录,如果找到说明已经登陆可以访问。

sessionId是用来连接session和cookie的一个桥梁。

cookie和session的区别:
安全性:session的安全性比cookie的安全性高,session存储在服务端,cookie存储在
客户端。
存储值的类型不同:cookie只支持字符串数据,session可以支持任意数据类型。
有效期不同:cookie可以长时间保存,session默认会在客户端关闭,或者session超时的时候
存储的大小不同:cookie大小不超过4kb,而session大的多,但访问量过多的时候,会占用
服务器资源。

什么是Token

Acesss Token

访问资源接口(API)时所需要的资源凭证

简单token的组成:
uid(用户唯一的身份标识)、time(当前的时间戳)、sign(签名,token的前几位哈希运算
压缩成的一定长度的十六进制字符串)

特点:
服务端无状态话、可扩展性好
支持移动端设备
安全
支持跨域程序调用

过程
1.客户端输入用户名密码发起请求
2.服务端接收到请求之后,对用户密码进行验证
3.验证成功之后,服务端生成一个token,并且将token传递到服务端保存在cookie或者local–
storge中
4.客户端每次向服务端请求资源的时候需要带着服务端签发的token
5.服务端收到请求,然后去验证客户端请求里面携带的token,如果验证成功,就像客户端返
回数据。

注意:
每次请求都需要携带token,需要把token放到http的header中

基于token的用户认证是一种服务端无状态的认证方式,服务端不用存放token数据。用解析
token的时间换取session的存储空间,从而减轻服务器的压力,减少频繁查询数据库。

token完全由应用管理,所以它可以避开同源策略

Refresh token

另一种token,用来刷新Acesse Token
如果没有Refresh token,也可以刷新access token,但每次刷新都要重新输入用户名
密码,会比较麻烦。有了refresh token,可以减少这个麻烦

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值