我正在尝试使用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,但它没有帮助
4条答案
按热度按时间czq61nw11#
字符串
编辑:.substr已弃用
“.substr”现在[已弃用][1]。我们可以使用这种方法:
型
OTP:9749
qojgxg4l2#
我不知道
speakeasy
,但我们已经成功地在我们的项目中使用notp
来生成我们在Express中使用的一次性密码,也许这会有所帮助:https://www.npmjs.com/package/notp8gsdolmq3#
添加生成验证令牌时给定的
step
值。字符串
juud5qan4#
您应该将
counter = 123
添加到验证功能中:字符串