Token的详解与应用

@Token的详解与应用

什么是Token?

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

为什么要用Token?

随着近几年上网设备的多样化,软件项目的UI层不仅仅再是窗体、html,还有iOS、安卓app,因此基于Servlet的HTTP Session也就不再适用,因为可能没有浏览器和html页面,也没有cookie了。
这种情况下,就需要Token技术来完成用户的跟踪,使得一个账户可以从html登录、也可以从手机app等其它客户端登录。

Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

Token的特点

  1. 无状态、可扩展
  2. 跨程序调用
  3. 支持平台较多浏览器,手机APP,电视机等支持平台较多浏览器,手机APP,电视机等
  4. 存储在缓存服务器中比如redis
  5. 可以自定义过期时间,让缓存失效
  6. 在用户正在操作但是Token快过期时,自动重新生成一个新Token
  7. 而且相对来说比较安全,因为Token生成的值是由用户名+用户id+登录时间+随机数生成

Token的由来

我们都是知道HTTP协议是无状态的,这种无状态意味着程序需要验证每一次请求,从而辨别客户端的身份。在这之前,程序都是通过在服务端存储的登录信息来辨别请求的。这种方式一般都是通过存储Session来完成。随着Web,应用程序,已经移动端的兴起,这种验证的方式逐渐暴露出了问题。尤其是在可扩展性方面。

Session 与 Token 的区别

token和session其实都是为了身份验证,session一般翻译为会话,而token更多的时候是翻译为令牌。
session服务器会保存一份,可能保存到缓存,文件,数据库;同样,session和token都是有过期时间一说,都需要去管理过期时间。
其实token与session的问题是一种时间与空间的博弈问题,session是空间换时间,而token是时间换空间。两者的选择要看具体情况而定。

session是一个在单个操作人 员整个操作过程中,与服务器端保持通信的惟一识别信息。在同操作人员的多次请求当中,session始终保证是同一个对象,而不是多个对象,因为可以对其加锁。当同一操作人员多个请求进入时,可以通过session限制只能单向通行。
本文正是通过使用session以及在session中加入token来验证同一 个操作人员是否进行了并发重复的请求,在后一个请求到来时 ,使用session中的token验证请求中的token是否致,当不一致时 ,被认为是重复提交,将不准许通过。

使用方式

Token的生成:
在这里插入图片描述

Token的置换方法:
在这里插入图片描述

在这里插入图片描述

总结:以上是个人对Token的一些见解,如有不对的地方还请指正,我会及时修改,一起讨论,学习。

扫描二维码关注公众号,回复: 4650905 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_42920440/article/details/85247590