Token

token认证流程

  • 用户登录校验,校验成功后就返回Token给客户端
  • 客户端收到数据后保存在客户端
  • 客户端每次访问API是携带Token到服务端,通常置于header头内
  • 服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码

token缺陷

  • token 一般都是 hash/encrypt 的字符串,会额外附加 加密/解密,需要一定性能开销
  • 无法作废已颁布的令牌
    • 认证发出后的过期时间内难以令其失效或撤销,类似缓存,只能自然死亡
  • 更多的空间占用
    • 放在客户端,需要考虑cookie的空间限制因素
    • 放在localStorage,则可能到受到Xss攻击

合理使用

  • 将cookie作为存储机制 JWT,并且设置HttpOnly=true
    • 确保只能由服务端保存以及通过自动回传的cookie取得JWT
  • 在JWT中尽可能只放“够用”的认证信息,其他信息放在数据库,需要时再获取
  • 数字签名,要求发放方验证票据是否合法
  • 关键点
    • 存储与认证,token主要是解决认证的验证问题
    • sessionId在负载均衡时,下一次使用会丢失上次状态,多服务器通信为保持状态一致性,通常会复制sessionID
  • 应用场景
    • JWT适合一次性的命令认证,颁发一个有效期极短的JWT,即使暴露了危险也很小,由于每次操作都会生成新的JWT,因此也没必要保存JWT,真正实现无状态。

http协议中的cookie

  • cookie存储
    • Cookie总是保存在客户端,可存储在内存和硬盘上
    • 内存cookie由浏览器维护,浏览器关闭即消失,也称之为非持久cookie
  • cookie属性
    • Domain:域,表示当前cookie所属于哪个域或子域下面
    • Expire time/Max-age:表示了cookie的有效期
    • secure:表示该cookie只能用https传输
    • httponly:表示此cookie必须用于http或https传输,不允许浏览器脚本访问操作此cookie
  • cookie交互
    • 从服务器端,发送cookie给客户端,是对应的Set-Cookie,发送cookie的各个属性
    • 从客户端发送cookie给服务器的时候,只是发送对应的名称和值,可通过js脚本document.cookie去设置对应的cookie
  • cookie会被附加在每个相应的HTTP请求中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值