必备-16.跨域身份验证方式

本文探讨了三种常见的跨域身份验证方式:Cookie、Session和Token。Cookie方式简单但不安全,Session依赖服务器存储,易丢失。Token(如JWT)提供实时校验且利于分布式部署,但需要额外编码。总结了每种方式的优缺点,为身份验证策略选择提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

必备-16.跨域身份验证方式

登录态校验

  • 登录态校验
    • 第一步:客户端发送POST请求做登录态校验,服务器端检验用户名密码是否准确,如果正确则返回成功
    • 第二步:客户端收到成功响应后,在本地手动设置cookie,存储登录成功,例如:isLogin=true
    • 第三步:之后再访问页面,检测本地是否有isLogin的cookie信息,有表示已经登陆过了,无需再验证
    • 缺陷
      • 不准确,不安全,cookie可以随便修改

客户端设置cookie

  • 客户端设置cookie:会话存储
    • 第一步:客户端发送POST请求登录,
    • 第二步:服务器做账号密码验证,如果正确在响应头中设置session信息:Set-Cookie:connect.sid
    • 第三步:客户端收到响应头中有Set-Cookie:connect.sid,会在缓存中存储一份
    • 第四步:之后再访问页面,客户端会携带connect.sid请求校验,服务器会查找自己的session来看是否匹配成功
    • 缺陷
      • session中有信息则是登录,否则没登录
      • session容易丢失【过去时间、服务器重启,session信息就没有了】
      • 和cookie相关,它也容易丢失
      • 不利于服务器的分布式
    • 优势:利用了cookie和服务器端的"猫腻",不需要前端自己设置cookie和传递cookie信息
image-20211228160652010

使用Token

  • 使用Token[常用]
    • 第一步:客户端向服务器发送登录请求,服务器进行校验:
      • 账号密码如果正确:基于JWT算法,生成一个Token信息【含有密钥、登录者、过期日期等信息】,“服务器端不需要存储这个Token”
    • 第二步:服务器手动把Token给客户端
    • 第三步:客户端获取Token后,存储到本地:可以用localStorage、sessionStroage、vuex/redux...
    • 第四步:再次访问首页时,需要手动将缓存的Token发给服务器端==【基于axios的请拦截器】==
    • 第五步:服务器拿到Token后,再基于JWT反反解析,验证它的有效性
    • 优点:实时校验,要稳定以及有利于服务器分布
    • 缺点:性能略低[忽略],需要自己写代码。
image-20211228161210767

三种情况

image-20211124182736317

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值