2017-04-19 2 views
0

Hier ist meine Implementierung für eine Zeit OTP (nach einer Minute ablaufen) mit Flüsterkneipe PaketFlüsterkneipe Express.js: Einmalpaßwort Generation ist nicht abgelaufen

var secret = speakeasy.generateSecret({length: 20}).base32; 
     var token = speakeasy.totp({ 
      secret: secret, 
      encoding: 'base32', 
      time:60 
     }); 
    console.log('OTP',token); 

Token

var verified = speakeasy.totp.verify({ 
      secret: req.params.secret, 
      encoding: 'base32', 
      token: req.params.token, 
      time:60 
     }); 

überprüfen aber die OTP ist nie abgelaufen console.log(verified) liefert immer wahr nach der Ablaufzeit

Antwort

0

In Ihrer Token-Definition:

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

Ändern der time Option step Option und versuchen Sie es erneut:

var token = speakeasy.totp({ 
      secret: secret, 
      encoding: 'base32', 
      step:300 //time in seconds 
     }); 

Es gibt zwei Optionen, die Sie verwenden können: time und step?

Bitte überprüfen Sie beide Optionen und entscheiden Sie, welche in Ihrem Fall geeignet ist. Wenn time die richtige Option für Sie ist, müssen Sie die Epoche in Sekunden angeben. 60 scheint hier kein richtiger Wert zu sein. Ein gültiger Wert für time könnte 1495176700 sein.

Geben Sie die Epoche, nach der Ihr Token abgelaufen sein soll, und versuchen Sie es erneut. Ich hoffe, es wird mit diesen Änderungen funktionieren.

+0

Gemäß der Dokumentation wird in Sekunden aus ihrem doc 'var Token spefied = speakeasy.totp ({ Geheimnis: secret.base32, Codierung: 'base32', Zeit: 1453667708 // in Sekunden angegeben }) ; ' – Jabaa

+0

Ich habe nicht die Bedeutung dieser" 60 scheint nicht ein richtiger Wert hier zu sein. Ein gültiger Wert für die Zeit könnte 1495176700 sein " – Jabaa

+0

Auch wo kann ich die epcoh Zeit hinzufügen ?? – Jabaa