Генерация OTP в nodejs с помощью speakeasy: установить время истечения - PullRequest
0 голосов
/ 22 сентября 2018

Я использую 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)
}

Но я не знаю, как установить истечение 10 минут ??

1 Ответ

0 голосов
/ 22 сентября 2018

Читая документацию, вы можете обнаружить, что базовое значение step составляет 30 секунд, поэтому, если вы хотите, чтобы время истечения было 10 минут, вам нужно установить значение 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)
}
...