[ETA在年底更新了我目前的解决方案]强制用户第一次登录时重置密码与设计
我希望能够手动创建高价值用户的帐户,这意味着我们必须生成一个密码他们并让他们在首次登录时进行更改。我找到了一个解决方案来做到这一点here,但它似乎在Devise而不是它的工作。
我现在的努力是覆盖在设计ConfirmationsController的#after_confirmation_path_for方法,使其包含这个片段:
if resource.sign_in_count == 1
resource.send(:set_reset_password_token)
edit_password_path(resource, reset_password_token: @token)
else
# etc
end
但是,当它遵循的路径,它从密码更改因为重定向看似远,该线路设计:: PasswordsController:
# Render the #edit only if coming from a reset password email link
append_before_filter :assert_reset_token_passed, only: :edit
所以,我可以覆盖该电话,但我警惕,为什么它在那里摆在首位,以及是否可能导致其他的问题 - 即使不是,它感觉就像我是d做了大量的黑客行为,以使我能想象的情景相对普遍。有更多的设计方法来解决这个问题吗?
ETA:我做了这个成功跳过过滤器使用下面的代码:
class PasswordsController < Devise::PasswordsController
skip_before_filter :require_no_authentication,
:assert_reset_token_passed,
only: :edit
end
这是工作中的相关用户的旅程,但这是相对较少的验收测试的应用程序,所以我m稍微谨慎一点,这会在其他地方产生连锁效应 - 例如意外地要求用户在其他用户旅程中更改密码。
任何人都可以建议使用这种方法是正常的,还是有一个更安全的选择?
看[这里](http://stackoverflow.com/a/29416605/1520965),似乎在回答你的问题 –
我们想送他们到设计密码重置屏幕,而不是指导他们到完整的配置文件编辑。 – Arepo