活动模型OTP在30秒睡眠后不生成新的密钥

时间:2017-04-28 07:44:10

标签: ruby-on-rails twilio

我在示例rails应用程序上尝试实现active_model_otp。 我的用户模型包含nameemail列。按照文档中的必要步骤后,我首先在rails console上创建了一个用户:

User.create(name: "Abc", email: "example@email.com")

这创建了如下记录:

<User id: 1, name: "Abc", email: "example@email.com", created_at: "2017-04-28 07:12:25", updated_at: "2017-04-28 07:12:25", otp_secret_key: "lol6rrtqppy46xfs">

然后我分配了:

user = User.last

user.otp_secret_key给出了生成的otp

=>"lol6rrtqppy46xfs"

然后我跑了

sleep(2)

根据给定的文档,它应该在2秒后产生新的otp。但是当我在2秒内再次在控制台中给出:user.otp_secret_key时,它将返回相同的旧otp。

=>"lol6rrtqppy46xfs"

我错过了什么?

1 个答案:

答案 0 :(得分:1)

Twilio开发者传道者在这里。

otp_secret_key是用于生成发送给用户的实际OTP代码的字符串。这是用户共享的秘密(通过QR码),因此需要在用户的auth应用程序和服务器上进行匹配。

生成的OTP应每30秒更改一次。据我所知,它使用ROTP gemwhich is 30 seconds的默认间隔。

获取OTP的方法是otp_code。所以要检查它是否有效,请尝试:

user = User.last
puts user.otp_code
sleep(30)
puts user.otp_code

让我知道这是否有帮助。