token生成

编程

token = "用户名:过期时间:token签名"

用户名:通过该字段获取用户的其他信息,同时用来生成token签名

过期时间:第一个作用是验证token是否过期,第二个作用是生成token签名

token签名:根据用户的数据和过期时间,用一套稳定的签名生成算法A,生成的签名。用来验证token,防止用户伪造token。

token 签名 = A(用户名,过期时间,私有key,其他特定的用户信息如密码)

当密码参与token签名的生成时,只要修改过密码,token即失效。token签名的参数应该具有稳定性,不能经常变更。

优点:简单,有效。只需要一张表就可以完成上述信息的

缺点:token中包含用户名

缺点解决方案:

  1. 用对称加密生成token,需要使用时再解密。

token = 对称加密("用户名:过期时间",密钥)

  1. 从token中去掉用户名和过期时间字段,新建一张表,建立 token 到 用户名 的映射关系. 需要用户名的时候就去查表。避免了用户名暴露在token中。这样的话就需要经常维护这张表,去掉过期的记录。

token = "token签名"

用户名 + 过期时间 = 查找(token)

  1. 用token签名作为token,并使用Redis(或其他KV数据库)存储用户名到token的映射。过期时间依靠Redis自带的机制实现(或其他方式)。

token = "token签名"

用户名 = Redis查找(token)

token不存在,那么token就是非法的。要使原有的token无效,就从Redis中删除对应的token。

以上是 token生成 的全部内容, 来源链接: utcz.com/z/516472.html

回到顶部