猿问

如何存储token比较合适?

在保持多步骤流程一致性时我需要用到token(比如找回密码):
步骤1,用户提交要找回密码的用户名和验证码,我生成token1,返回页面中包含这个token1
步骤2,用户提交他收到的短信验证码和token1,我根据token1来识别是哪个用户,短信验证码是否正确,token是否过期,这个token的使用场景是否正确,如果都有效,我生成一个token2,返回页面包含这个token2
步骤3,用户提交他的新密码和token2,我根据token2来找出是哪个用户,最后重置那个用户的密码
这里的token都有时效性,我存在mysql里,每天都要跑cronjob来删除过期的token,这样不太好吧,我应该怎么存token?或者有更好的办法?
FFIVE
浏览 1973回答 2
2回答

吃鸡游戏

token可以使用md5(username+userid+timestamp)_timestamp,这种格式的token基本上不会重复了,同时尾部的timestample也能用于过期检测。对于一个用户来说通常一个token就够了,当你生成第二个token的时候第一个已经失效了,所以可以直接update掉,这样每个用户最多有一个token就不需要考虑删除的问题了,当然在token被验证有效地时候应该把数据库中的tokensetnull,防止同一个token被二次验证。

慕桂英546537

token不需要存储的,你可以使用AES的可逆向加/解密算法对数据进行加密,如aes.ecode(userId+time+info+key(密钥)),生成token后把这个串传回给客户端,不需要保存,等下次他传回给你的时候你只需要aes.decode(token)解密一下就可以获得这里面的用户信息与当前登陆的用户信息对比一下就行了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答