gpt4 book ai didi

javascript - Speakeasy.js 每小时生成新 token

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:08 32 4
gpt4 key购买 nike

我正在尝试通过node.js Express服务器上的speakeasy.js生成密码 token ,该 token 将用作身份验证。密码应每小时更改一次。我正在使用路由器来检索 token 并验证它。

如果出于测试目的将时间设置为30秒,但 token 永远不会改变。

代码:

var secret = speakeasy.generateSecret();

var token = speakeasy.totp({
secret: secret.base32,
encoding: 'base32',
step: : 10
});

router.get('/token/:token', function(req, res) {
console.log(token);
var usertoken = req.params.token;
if(usertoken == token){
res.send("Verified")
} else {
res.send("Not Verified")
}
res.json({ token: token, usertoken: usertoken });

});

有什么建议吗?

编辑向 token 添加了步骤。

当我请求终点时,例如http://localhost:8080/api/token/664006控制台显示 token ,例如290595。当我在一段时间后刷新端点时, token 应该更改,但事实并非如此。仍然是 290595。

最佳答案

我刚刚检查了文档,看起来您正在寻找的参数是步骤。您应该将时间字段保留为默认值(文档中的 Date.now())并使用步骤字段。

类似这样的事情:

var secret = speakEasy.generateSecret();
var token = speakEasy.totp({
secret : secret.base32,
encoding : 'base32',
// leave time field to default
step : 10
});

并使用提供的方法进行验证,而不是 ==:

router.get('/token/:token', function(req, res) {
console.log(token);
var usertoken = req.params.token;
var verified = speakeasy.totp.verify({
secret: base32secret,
encoding: 'base32',
token: userToken
});
//check if the token has changed
console.log(verified);

});

enter image description here

https://github.com/speakeasyjs/speakeasy

关于javascript - Speakeasy.js 每小时生成新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39872045/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com