• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 如何存储token比较合适?

如何存储token比较合适?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了token,hid token 3003,微信小程序token,token是什么意思,unexpected token等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:如何存储token比较合适?
描述:

在保持多步骤流程一致性时我需要用到token(比如找回密码):

步骤1,用户提交要找回密码的用户名和验证码,我生成token1,返回页面中包含这个token1

步骤2,用户提交他收到的短信验证码和token1,我根据token1来识别是哪个用户,短信验证码是否正确,token是否过期,这个token的使用场景是否正确,如果都有效,我生成一个token2,返回页面包含这个token2

步骤3,用户提交他的新密码和token2,我根据token2来找出是哪个用户,最后重置那个用户的密码

这里的token都有时效性,我存在mysql里,每天都要跑cron job来删除过期的token,这样不太好吧,我应该怎么存token?或者有更好的办法?


解决方案1:

token类似于单个web工程中使用的session,保存起来便于查看访问日志,不保存也可以,但每个模块和功能的操作日志最好记录一下,以便后期运营和维护使用。

解决方案2:

存redis,设置过期时间是最方便的

解决方案3:

token 我是用md5 用户名加 现有密码生成....
然后记录下时间

解决方案4:

我一般直接存session

解决方案5:

可以存memcahe或redis里,缓存设定时间过期。

解决方案6:

token不用存mysql吧,存内存就好了。
一个线程轮训删除过期的token数据。
当然你会说宕机了,内存数据就没了,但是基于找回密码的操作不常有,这个数据不会太多,而时效性一般不会太长,如果真遇到宕机,宕机了用户也无法访问了啊,故这个token就废弃也无所谓,让用户重新提交找回操作。

解决方案7:

或者不用储存token,有效性信息就放在token里,你看看这个json web token

解决方案8:

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

解决方案9:

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


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • (python)在写一个爬虫,源代码里面没有csrftoken,要如何获取到?
  • 有谁知道laravel登录的功能是如何在session中保存用户信息的,我只在session中看到了一个token
  • Python报invalidsyntax
  • (laravel)不使用remember_token时退出报错,请问如何解决?
  • laravel关闭指定控制器方法的CSRF后获取不到session吗
  • 如何用php获取某个页面中的input的csrf_token?
  • 关于JavaScriptSDK里mainjs的uptoken_url的问题
  • laravel54的api路由必须要给user表添加api_token字段?
  • 七牛base64存储提示{"error":"badtoken"}
  • Laravel有个排除验证token的设置,可是不验证会导致什么安全问题吗?

相关文章

  • 2017-06-07 PYthon模拟登录遇到问题,请高手指点!!!!
  • 2017-06-07 Java数组初始化,这三种方式有什么区别?
  • 2017-06-07 mac10111系统如何添加环境变量
  • 2017-06-07 python爬虫python多维字典遍历
  • 2017-06-07 请问七牛编码C#知否有直接net20的Qiniudll?
  • 2017-06-07 请检查文档中心的链接
  • 2017-06-07 Doc设置环境变量无法用osenvironget变量取出
  • 2017-06-07 python2和python3一起装了,现在有个代码是python2的pip默认3的怎么弄?
  • 2017-06-07 七牛又出问题了,无法搜索、上传、删除、替换文件
  • 2017-06-07 (ruby)python框架繁多,如何整体把握?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 帮忙推荐几本crm书籍
    • (python)如何设计socket软件
    • [教程]OpenCL的C++函式庫:BoostCompute
    • 抢啊抢,抢沙发!
    • gruntserve监听成功,通过curl可以访问,为何浏览器访问不了?
    • Python使用redis发布订阅时,监听频道时出现的问题?
    • ueditor文本编辑器上传的图片如何提交到七牛云存储里?
    • laravelModel取数据json格式存储
    • 一个算法:在极大的无序序列中寻找三个数和大于等于N的所有组合数量
    • 这段JavaScript的排列组合算法如何理解?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有