2017-04-12 76 views
0

我試圖在使用speakeasy https://www.npmjs.com/package/speakeasy快遞js生成OTP。一次性密碼生成快遞js

下面是示例代碼,我已經試過

var speakeasy = require('speakeasy'); 
     var secret = speakeasy.generateSecret({length:32}); 

     //generate token 
     var code = speakeasy.totp({ 
      secret:secret.base32, 
      encoding: 'base32', 
      step:300, 
      window:100, 
      counter:123 
     }); 

     //verify token 
     var verified = speakeasy.totp.verify({ 
      secret:secret.base32 , 
      encoding: 'base32', 
      token: code 
     }); 

時,覈對令牌console.log(verified)總是返回false。

我已經按照這個鏈接GitHub的,但https://github.com/speakeasyjs/speakeasy/issues/52它並沒有幫助

+0

這裏是一個演示..結帳這個,https://sedemo-mktb.rhcloud.com/ –

+0

相同的代碼被使用,但驗證返回false – Jabaa

+0

您是否嘗試添加'window:2'選項用於「驗證」功能。 –

回答

2

我不知道speakeasy,但我們已經成功地使用notp在我們的項目來產生我們與快遞使用的一次性密碼,也許這可能有所幫助:https://www.npmjs.com/package/notp

+0

請問您可以更新代碼示例,文檔不提供足夠的信息 – Jabaa

+0

現在我得到了一個工作示例,但如何增加令牌到期時間 – Jabaa

+0

有一個看看'opt'配置對象:[link](https://github.com/guyht/notp#totpverifytoken-key-opt) ' import'totp'from'notp'; const code = totp.gen(user.oathKey,otpOptions); const isCodeValid = totp.verify(code,user.oathKey,otpOptions); ' –