【问题标题】:One time password generation in express jsexpress js中的一次密码生成
【发布时间】:2017-04-12 11:01:57
【问题描述】:

我正在尝试使用 speakeasy https://www.npmjs.com/package/speakeasy 在 express js 中生成 OTP。

这是我尝试过的示例代码

var speakeasy = require('speakeasy');
        var secret = speakeasy.generateSecret({length:32});

        //generate token
        var code = speakeasy.totp({
            secret:secret.base32,
            encoding: 'base32',
            step:300,
            window:100,
            counter:123
        });

        //verify token
        var verified = speakeasy.totp.verify({
            secret:secret.base32 ,
            encoding: 'base32',
            token: code
        });

验证令牌console.log(verified)时总是返回false。

我已经关注了这个 github 链接 https://github.com/speakeasyjs/speakeasy/issues/52 但它没有帮助

【问题讨论】:

  • 这是一个演示.. 看看这个,sedemo-mktb.rhcloud.com
  • 使用相同的代码,但验证返回错误
  • 您是否尝试将window: 2 选项添加到您的verify 函数中。
  • 已添加但没有用

标签: javascript mysql node.js express


【解决方案1】:

我不知道speakeasy,但我们已经在我们的项目中成功使用notp 来生成我们在Express 中使用的一次性密码,也许这可能会有所帮助:https://www.npmjs.com/package/notp

【讨论】:

  • 能否请您更新代码示例,文档没有提供足够的信息
  • 现在我得到了一个工作示例,但是如何增加令牌过期时间
  • 在这里查看opt 配置对象:link ` import { totp } from 'notp';常量代码 = totp.gen(user.oathKey, otpOptions); const isCodeValid = totp.verify(code, user.oathKey, otpOptions); `
【解决方案2】:
module.exports = (num = 4) => {
    return Math.random().toFixed(num).substr(`-${num}`)
}

一次性密码:9749

【讨论】:

    【解决方案3】:

    在生成验证令牌时添加step 值。

    var verified = speakeasy.totp.verify({
            secret:secret.base32 ,
            encoding: 'base32',
            token: code,
            step: 300
        });
    

    【讨论】:

      【解决方案4】:

      您应该将counter = 123添加到验证功能中:

      var verified = speakeasy.totp.verify({
            secret: secret.base32,
            encoding: 'base32',
            token: code, 
            counter: 123
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        • 2023-03-07
        相关资源
        最近更新 更多