【发布时间】:2022-01-23 20:06:39
【问题描述】:
我有一个带有帐户恢复流程的 Rails + Nuxt 项目。
当用户忘记他的注册电子邮件和密码时,会发生一种情况。 用户可以通过提交他的帐户 ID 来记住他的电子邮件。 然后,Rails 会回复用户的 ID 和电子邮件的混淆版本。
此时,用户已经知道他的电子邮件,但不知道他的密码。于是他点击了“记住密码”按钮。
默认情况下,Devise(身份验证库)期望完整的电子邮件提交(不是混淆),以便生成恢复链接并将其发送给用户。但此时,只有经过混淆的电子邮件可用,我不想打扰用户填写完整的电子邮件,因为我已经知道他是谁(从帐户 id)。
也就是说,我想知道是否存在一些关于覆盖以下 Devise 方法以使用用户 ID 而不是电子邮件发送恢复令牌的安全问题?
# Attempt to find a user by its email. If a record is found, send new
# password instructions to it. If user is not found, returns a new user
# with an email not found error.
# Attributes must contain the user's email
def send_reset_password_instructions(attributes = {})
recoverable = find_or_initialize_with_errors(reset_password_keys, attributes, :not_found)
recoverable.send_reset_password_instructions if recoverable.persisted?
recoverable
end
https://github.com/heartcombo/devise/blob/main/lib/devise/models/recoverable.rb
【问题讨论】:
标签: ruby-on-rails security devise