为了账号安全,请及时绑定邮箱和手机立即绑定

如何存储token比较合适?

如何存储token比较合适?

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

2 回答

?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

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

TA贡献1848条经验 获得超10个赞

token不需要存储的,你可以使用AES的可逆向加/解密算法对数据进行加密,如aes.ecode(userId+time+info+key(密钥)),生成token后把这个串传回给客户端,不需要保存,等下次他传回给你的时候你只需要aes.decode(token)解密一下就可以获得这里面的用户信息与当前登陆的用户信息对比一下就行了
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 1972 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信