我正在使用Devise和我的Rails 3应用程序。重置密码的当前行为是单击“忘记密码?”链接。这里的链接是:
(url)/password/new.user
将在Devise passwords_controller.rb中调用以下方法:
def new
build_resource({})
end
此方法将执行:
生成密码重置令牌并将其添加到数据库
向具有包含令牌的链接的人发送电子邮件:
(URL)/密码/编辑?reset_password_token = XXXXXXXXXXXXXXX
有没有办法说服Devise只执行第1步而不是第2步?如果可能的话,我是否应该注意任何安全问题,我确实采用这种方法来简化网站的一部分。
答案 0 :(得分:3)
我建议覆盖用户(?)模型上的send_devise_notification
,并在通知值为:reset_password_instructions
时返回true。像这样:
# app/models/user.rb
def send_devise_notification(notification)
return true if notification == :reset_password_instructions
end
检查他们关于如何覆盖/自定义发送电子邮件行为的示例 https://github.com/plataformatec/devise/blob/master/lib/devise/models/authenticatable.rb#L127
答案 1 :(得分:1)
您可以在实例级别禁用它:
/abc.htm
答案 2 :(得分:0)
问题的标题很笼统,但问题本身更具体。这是截至 2021 年普遍问题的答案。
为防止在更改用户密码时发送密码更改电子邮件通知,请在保存用户之前调用用户的 skip_password_change_notification!
。
user = User.find(123)
user.skip_password_change_notification!
user.password = 'DoNotUse$123'
user.save