首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Speakeasy express js:一次性密码生成未过期

Speakeasy express js:一次性密码生成未过期
EN

Stack Overflow用户
提问于 2017-04-19 14:22:13
回答 1查看 618关注 0票数 0

下面是我使用speakeasy包实现一次性动态口令(一分钟后过期)

代码语言:javascript
复制
 var secret = speakeasy.generateSecret({length: 20}).base32;
        var token = speakeasy.totp({
            secret: secret,
            encoding: 'base32',
            time:60
        });
  console.log('OTP',token);

验证令牌

代码语言:javascript
复制
var verified = speakeasy.totp.verify({
            secret: req.params.secret,
            encoding: 'base32',
            token: req.params.token,
            time:60
        });

但是动态口令永远不会过期,在过期时间过后,console.log(verified)总是返回true

EN

回答 1

Stack Overflow用户

发布于 2017-04-19 14:55:45

在令牌定义中:

代码语言:javascript
复制
var token = speakeasy.totp({
            secret: secret,
            encoding: 'base32',
            time:60
        });

time选项更改为step选项,然后重试:

代码语言:javascript
复制
var token = speakeasy.totp({
            secret: secret,
            encoding: 'base32',
            step:300  //time in seconds
        });

有两个选项可以使用:timestep

请检查这两个选项,并决定哪一个适合您的情况。如果time是正确的选项,那么您必须以秒为单位指定纪元时间。60在这里似乎不是一个正确的值。time的有效值可以是1495176700

给出您希望令牌过期的纪元时间,然后重试。希望它能与这些变化一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43487918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档