gpt4 book ai didi

ruby-on-rails - 在设备 3.1 中返回设计确认 token

转载 作者:行者123 更新时间:2023-12-04 16:39:48 24 4
gpt4 key购买 nike

现在 Devise 已经从数据库中删除了 :confirmation_token,我如何在 rspec 中返回设计确认 token ?

我正在尝试通过使用确认 token 手动访问 user_confirmation 路径来测试可确认模块。我怎样才能做到这一点?

最佳答案

莱昂纳多平托非常有用的答案略有不同:

# Generate new raw/encrypted confirmation token pair and update database.
# This lets us visit the new "raw" path to confirm the user.
raw_confirmation_token, db_confirmation_token =
Devise.token_generator.generate(User, :confirmation_token)
User.last.update_attribute(:confirmation_token, db_confirmation_token)
visit user_confirmation_url(confirmation_token: raw_confirmation_token)

背景:如 this Platformatec blog post 中所述在“将摘要 token 存储在数据库中”下,Devise 3.1+ 向用户发送“原始”确认 token ,并将加密版本保存在数据库中。当用户点击原始链接时,原始 token 在数据库中搜索之前被重新加密。见 send_confirmation_instructionsgenerate_confirmation_token在这个源代码中:

https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb

此代码生成一对新的原始和加密 token ,用新的加密版本更新数据库中的最后一个用户,然后 visit s 原始版本。 token 应该匹配并且应该确认帐户。

虽然不是在最初的问题中,但我也想在 Devise 确认邮件中测试正确的链接,但我认为这是不可能的:当我创建用户时,确认电子邮件会立即发送,因此电子邮件的正文包含原始原始 token ,而不是此处生成的新 token 。

关于ruby-on-rails - 在设备 3.1 中返回设计确认 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com