javascript - 使用Speakeasy在nodejs中生成OTP:设置到期时间
问题描述
我正在使用https://www.npmjs.com/package/speakeasy生成 OTP,我希望有效期为 10 分钟。
这是生成的代码
const generateOtp = function generateOtp() {
let token = speakeasy.totp({
secret:process.env.OTP_KEY,
encoding: 'base32',
digits:4,
window:10
});
return token;
}
验证一次性密码
const verifyOtp = function verifyOtp(token){
let expiry = speakeasy.totp.verify({
secret:process.env.OTP_KEY,
encoding: 'base32',
token: token,
window:10
});
console.log(expiry)
}
但我不知道如何将到期时间设置为 10 分钟?
解决方案
阅读文档你会发现 basestep
是 30 秒,所以如果你想有 10 分钟的过期时间,你需要设置step
to 60
。然后,使用该verifyDelta
方法您应该能够检查令牌是否过期。
const generateOtp = function generateOtp() {
let token = speakeasy.totp({
secret:process.env.OTP_KEY,
encoding: 'base32',
digits:4,
step: 60,
window:10
});
return token;
}
const verifyOtp = function verifyOtp(token){
let expiry = speakeasy.totp.verifyDelta({
secret:process.env.OTP_KEY,
encoding: 'base32',
token: token,
step: 60,
window:10
});
console.log(expiry)
}
推荐阅读
- sorting - 如何在 spark rdd 中通过自定义显示前 N 个结果?
- python - 字典更新替换原始值
- javascript - window.location.reload(); 除非加上警报,否则失败
- excel - 将单元格组合成一个字符串,因此可以使用输入框搜索它们
- c++ - 在类外用 std::is_invocable_v 定义模板函数
- vba - 根据单元格中的字符串数据对 Microsoft Word 表列进行颜色编码,VBA
- javascript - ASP.NET MVC 缩小 2500 行中的一行 javascript 代码会导致错误
- groovy - 文件中的常规输入迭代地图
- javascript - 使用 Google Apps 脚本从 Firebase 检索数据
- pine-script - 我在版本 4 中使用 pine script v3 时遇到问题(Koncorde 指示器)