Token认证模式详解

一.为什么要用token?

1.HTTP是一个无状态的协议,一次请求结束后下次再发送请求服务器就不知道请求是谁发来的了(同一个IP不代表同一个用户),在Web应用中,用户的认证和鉴权又是非常重要的一环。

2. 在Web应用发展的初期,大部分采用基于Cookie-Session的会话管理方式,但是基于Session的方法又存在很多问题;

  • 服务端需要存储Session,并且由于Session需要经常快速查找,通常存储在内存中或内存数据库中,同时在线用户较多需要占用大量的服务器资源
  • 当需要扩展时,创建Session的服务器可能不是验证Session的服务器,所以还需要将所有Session单独存储并共享。
  • 由于客户端使用Cookie存储SessionID,在跨域场景下需要进行兼容性处理,同时这种方式也难以防范CSRF攻击。

鉴于基于Session的会话管理方式存在上述多个缺点,基于Token的无状态会话管理方式诞生了,所谓无状态:就是服务器端可以不在存储信息,甚至不在存储Session

二.token是什么

Token是 服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后, 服务器生成-个Token便将此Token返回给客户端后,客户端只需带上这个Token前来请求数据即可,无需再次带上域名和密码。  

token的具体逻辑如下:

  • 客户端使用用户名,密码进行认证。
  • 服务端验证用户名,密码正确后生成Token返回给客户端。
  • 客户端保存Token,访问需要认证的接口在URL参数或HTTP Header中加入Token
  • 服务端通过解码Token进行鉴权,返回给客户端需要的数据。

 在这里插入图片描述

 Token的优势:

  1. 服务端不需要存储和用户鉴权有关的信息,鉴权信息会被加密到Token中,服务端只需要读取Token中包含的鉴权信息即可。
  2. 避免了共享Session导致的不易扩展的问题。
  3. 不需要依赖Cookie,有效的避免Cookie带来的CSRF攻击问题
  4. 使用CORS可以快速解决跨域问题。

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值