cookie,session,token区别

cookie,session,token区别

前提:用户登陆一次以后下次不会再输入密码,核心的概念就是存储

cookie流程

浏览器发起http请求,服务器会进行cookie设置,服务器会进行cookie设置,也就是set-cookie,服务器会把cookie中的名和值属性里面的内容填充完整,cookie发给浏览器以后,浏览器会保存起来,整浏览器以后每一次发起请求都会自动附上这个cookie,存储在浏览器中的数据,

session流程

session一般都保存在数据库里,用户登录后有用户名和密码经过比对后,成功登录以后,会返回sessionid和max-age(会话结束时间),然后把这两个东西传回到浏览器,这里就用到了cookie,设置cookie,并且把sessionid加入到cookie中,再把会话结束时间对应设置成为这个cookie的有效期,浏览器拿到cookie后进行保存,注意,这个时候cookie中是没有用户名和密码的,只有seesionid也是没有规律的字符串,服务器在发送cookie之前会对这个含有seesionid的cookie进行签名,换句话说,如果黑客修改了seesionid,那么sessionid就会变成服务器识别不了的字符串也就是说,其实sessionid也是利用了cookie的特点作为媒介,来进行对用户名称以及密码进行保存的,

随着互联网的发展,用户群体变得越来越大,如果服务器一直坚持使用cookie,那么服务器就会面临大量的sessionid保存在服务器里面,现在就出现了一种技术叫做jwt

jwt流程

用户第一次登陆以后,服务器会生成一个jwt,服务器不需要保存这个jwt,只需要保存jwt签名的密文,接着把jwt发给浏览器,可以让浏览器以cookie或者storage的形式存储,假设以cookie的形式保存下来,这样用户每次发送请求都会把这个jwt发给服务器,和session很类似,只不过token存储在用户那边

JWT(json web token)认证机制

1.了解session认证的局限性

session认证需要配合cookie才能实现,但由于cookie不支持跨域访问,所以当涉及到前端跨域请求后端接口的时候,需要做很多额外的配置

注意

  • 当前端请求后端,需要跨域的时候,推荐使用JWT机制

工作原理

在这里插入图片描述

将用户的信息通过token字符串的形式,保存在客户端浏览器中,服务端通过还原token字符串的形式来认证用户的身份

jwt中保存在客户端,session保存在服务端

jwt组成部分:头部,有效荷载,签名 HEADER.Payload.Signture

使用英文的“ . ”分隔

其中payload才是真正的用户信息,剩下两个是安全性相关的部分,为了保证token的安全性

使用方式:

浏览器客户端收到jwt后,通常会存储在localstroage或者sessionstorage中

此后,客户端每次与服务器通信,都要带上这个jwt的字符串,从而进行身份认证,推荐的做法是把jwt放在http请求头中的authorization中

Authorization: Bearer<token>

参考:https://www.bilibili.com/video/BV1ob4y1Y7Ep?spm_id_from=333.337.search-card.all.click

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值