token原理

一、token

举个栗子:

如何在客户端与服务器断开连接后,客户端不直接存储用户的账号和密码的情况下,实现自动登录,即避免用户多次输入登录。(持久化登录)

token机制:

  1. 客户端通过,账户和密码请求登录。
  2. 服务器收到请求,验证账户密码。验证成功后,签发一个字符串token(包含部分用户信息和过期时间)给客户端。
  3. 客户端请求时,带上token
  4. 服务器收到请求后,验证token,通过则返回对应数据,否则给出错误信息。

用户匹配:在实际使用中通过添加用户的少量信息,如 useId,就能将 token 与用户进行关联。

token校验:

token虽然可以持久化登录,但是服务器又该怎么确保token的正确性呢?(防止伪造)

  • 防伪造:服务器利用私钥对一些不敏感的信息加密生成签名,将签名和数据拼接作为token的一部分。例如 JWT,参考JSON Web Token - 在Web应用间安全地传递信息
  • 干扰码:服务器生成 token 时,可以使用客户端的UA作为干扰码对数据加密。客户端请求时,服务器可以使用UA对token解密。
  • 有效期:通过加入有效期,使得 token 仅在一段时间内有效,这样能尽量减少损失。

token刷新:

token 过期机制:

  • 服务器缓存token及对应的过期时间,需要服务器更新过期时间,token就会再次有效。
  • token中包含有过期时间。需要重新生成 token

token 过期了,如果客户端希望刷新 token 的话,需要重新引入数据来验证。一种是让用户重新输入账号密码。另一种方式就是使用摘要。即在生成 token 的同时,生成 token 的摘要,一起返回给客户端,类似于微信登录的 refresh_token。

二、相关讨论:

三、相关阅读:

-------------本文结束感谢您的阅读-------------
0%