登录注册(cookie session token)

登录系统

  1. 获取输入的用户名和密码,作为参数传递给../login API
  2. 若验证成功,api返回status:ok,同时返回这个人的信息(name、password)和token值。
  • 前端将token值利用浏览器存储,并保存到浏览器里。
  • 将token值利用vuex的存储起来,目的,在以后的http请求头里加上token值,验证用户身份
  • 提示“登录成功”,路由跳出到主页。

     3.若验证失败,返回这个人信息,根据返回的name、password判断是用户名还是密码错误,提示相应信息

补充:在登录功能时,为什么token要保存下,为了之后的http请求都带上这个api。

token的方式就是把用户的状态信息加密成一串token传给前端,然后每次发请求时把token带上,传回给服务器端;服务器端收到请求之后,解析token并且验证相关信息;

 

关于 session  cookie  token的理解

常见的两种登录

 

一、服务器session+客户端sessionId

1.客户端带着用户名和密码去访问 /login 接口,服务器端收到后校验用户名和密码,校验正确就会在服务器端存储一个sessionId和session的映射关系

2.服务器端返回response,并且将sessionId以set-cookie的方式种在客户端,这样一来,sessionId就存在了客户端。这里要注意的是,将sessionId存在cookie中并不是一种强制的方案,而是大家一般都这么做

3.客户端之后再发起非登录请求时,发请求的时候符合domain和path的时候,会自动带上cookie,省去了手动塞的过程。服务端通过cookie中的sessionId找到对应的session来知道此次请求是谁发出的。

二、tooken(为了防止csrf攻击)

业界通用的加密方式是jwt(json web token),jwt的具体格式如图:

jwt = base64url(header) + "." + base64url(payload) + "." + signature

jwt可以放在response中返回,也可以放在cookie中返回,这都是具体的返回方式,并不重要

token 的认证流程

  1. 用户登录,成功后服务器返回Token给客户端。
  2. 客户端收到数据后保存在客户端
  3.    客户端再次访问服务器,将token放入headers中
  4.    服务器端收到请求之后,解析token并且验证相关信息

 

三、区别

sessionId的方式本质是把用户状态信息维护在server端,token的方式就是把用户的状态信息加密成一串token保存在客户端。

所以跟第一种登录方式最本质的区别是:通过解析token的计算时间换取了session的存储空间

两种登录方案存在的问题

一、session方式

session方式由于会在服务器端维护session信息,单机还好说,如果是多机的话,服务器之间需要同步session信息,服务横向扩展不方便。

session数量随着登录用户的增多而增多,存储会增加很多。

session+cookie里面存sessionId的方式可能会有csrf攻击的问题,常见的方式是使用csrf_token来解决

二、jwt方式

jwt的过期时间需要结合业务做设置,而且jwt一旦派发出去,后端无法强行使其作废

总结、

  • session存储于服务器,可以理解为一个状态列表,拥有一个唯一识别符号sessionId,通常存放于cookie中。服务器收到cookie后解析出sessionId,再去session列表中查找,才能找到相应session。依赖cookie
  • cookie类似一个令牌,装有sessionId,存储在客户端,浏览器通常会自动添加。
  • token也类似一个令牌,无状态,用户信息都被加密到token中,服务器收到token后解密就可知道是哪个用户。需要开发者手动添加。
  • jwt只是一个跨域认证的方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值