代码之家  ›  专栏  ›  技术社区  ›  shamon shamsudeen

使用speakeasy在nodejs中生成OTP:设置到期时间

  •  0
  • shamon shamsudeen  · 技术社区  · 6 年前

    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;
    }
    

    验证OTP

    const verifyOtp = function verifyOtp(token){
        let expiry =  speakeasy.totp.verify({
            secret:process.env.OTP_KEY,
            encoding: 'base32',
            token: token,
            window:10
        });
        console.log(expiry)
    }
    

    1 回复  |  直到 6 年前
        1
  •  1
  •   Dez    6 年前

    阅读文档可以发现 step 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)
    }
    
    推荐文章