Cookie,Session,JWT,Token 区别解析

cookie,session,token,jwt

基本概念

  • 认证

    • 证明你是你自己,验证身份

  • 授权

    • 用户授予第三方访问用户的资源权限

      • 小程序,应用等获取手机上的权限

  • 凭证

    • 认证,授权,媒介

      • 身份证,网站游客模式,用户模式的令牌

cookie

http无状态协议,客户端与服务器进行会话,不会保留会话信息,如果需要跟踪访问者的身份证信息,需要将会话状态进行把保存,通过维护cookie或者session来做到。

cookie是服务端发送至浏览器上存在浏览器内的一小块数据,在下一次发送时会携带。

cookie不可跨域,但在一级域名和二级域名之间允许相互使用。domain属性。

cookie属性,键值对来存储内容,domain域名,哪个路径下生效用path,maxAge失效时间,expires过期时间,secure,加密传输(如果true,在https下才有效).httpOnly,无法通过JS脚本读取Cookie信息,还是能过通过Application中手动修改信息,一定程度上防止xss攻击

session

另一种记录客户端和服务器会话状态的一种机制。

session基于cookie实现,session是存储在服务器端,sessionid是存储到客户端的cookie中。

  • 流程

    • 第一次请求服务器,服务器根据提交的信息创建Session

    • 请求返回将Session的唯一标识SessionId返回给浏览器

    • 浏览器接收到SessionId信息后,会将该信息存入Cookie中,同时记录Cookie此SessionID属于哪个域名

    • 第二次请求服务器时,查看该域名下是否存在Cookie,存在Cookie自动也将其信息发送给服务器,服务器从Cookie中找到SessionID,再根据SessionId查找对应的Session信息,如果没有就是没有登陆或者登陆失效,如果找到就可以继续操作。

 

区别:

  • 大小cookie4kb,session最多一个浏览器一般是20个,默认不超过1024kb

  • 安全性,存在客户端 一个存在服务端

  • 存储类型,cookie时字符串,Session可以时任意类型

    • 有效期,Cookie可以时长时间保存,Session在浏览器清除cookie或者Session超时的情况下都会失效。

 

Token

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

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

  • 过程:

    • 客户端使用用户名,密码登陆

    • 服务器验证请求,验证是否成功,将用户信息生成token返回给客户端

    • 客户端接收到token将其存在本地的cookie或者localstorage中

    • 客户端在每一次请求时,都将token携带

    • 服务器接收到请求,验证客户端携带的token,如果成功就向客户端返回请求的数据

  • 服务端不需要存token通过解析token的时间来换取session 的存储空间,减轻服务器压力

Refresh Token

  • 通过RefreshToken来更新AccessToken,通常RefreshToken的时间长于AccessToken,当AccessToken失效以后,通过RefreshToken来重新获取新的Token,如果RefreshToken也失效了,用户只能重新登陆

 

区别:

  • session服务端状态化,记录会话信息,token令牌,服务端无状态话,不会存储会话信息。

  • token更安全,有签名,防止监听以及重放攻击,Session以来链路层保证安全

 

JWT

跨端认证解决方案

授权认证机制

过程:

  • 用户输入用户名密码登陆认证成功,返回一个JWT

  • token保存本地

  • 用户需要在请求头Authorization中使用Bearer添加JWT

 

JWT不使用Cookie,不存在跨域问题,用户状态不再存储在服务器内容中是无认证机制。JWT是自包含,减少了查询数据库的需要。

 

区别:

  • token需要查询验证用户信息,JWT是Token和Payload加密存储在客户端中,服务器只需要通过密钥解密验证,校验也是JWT自己实现的,不需要查询或者减少查询数据库

 

引用参考:https://juejin.cn/post/6844904034181070861#heading-22

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值