Ruby on rails 3 如何在Desive中更改用户的电子邮件地址;“安全”吗;?

Ruby on rails 3 如何在Desive中更改用户的电子邮件地址;“安全”吗;?,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,默认情况下,使用电子邮件地址进行注册和登录 但我想,电子邮件地址应该允许用户更改 如果我允许用户编辑电子邮件地址,并且用户指定了一个“不正确”(即错误输入)的电子邮件地址,然后用户注销,并且用户也忘记了键入的电子邮件是什么,那么现在用户无法访问用户帐户 如何最好地解决这个问题?(除了创建一个单独的、不可更改的用户名字段,该字段将始终允许用户登录)如果用户更改其电子邮件,您可以强制用户再次确认其帐户 一旦您更新了相关用户的密码,您需要取消对该用户的确认,然后重新发送确认电子邮件 要取消确认用户,请

默认情况下,使用电子邮件地址进行注册和登录

但我想,电子邮件地址应该允许用户更改

如果我允许用户编辑电子邮件地址,并且用户指定了一个“不正确”(即错误输入)的电子邮件地址,然后用户注销,并且用户也忘记了键入的电子邮件是什么,那么现在用户无法访问用户帐户


如何最好地解决这个问题?(除了创建一个单独的、不可更改的用户名字段,该字段将始终允许用户登录)

如果用户更改其电子邮件,您可以强制用户再次确认其帐户

一旦您更新了相关用户的密码,您需要取消对该用户的确认,然后重新发送确认电子邮件

要取消确认用户,请执行以下操作:

user = User.find(1)
if user.confirmed?
  user.confirmed_at = nil
  user.save(:validate => false)
end
要重新发送电子邮件确认,请执行以下操作:

user = User.find(1)
user.send_confirmation_instructions

希望这有帮助

Desive是开箱即用的。以下是来自初始值设定项的信息:

# If true, requires any email changes to be confirmed (exactly the same way as
# initial account confirmation) to be applied. Requires additional unconfirmed_email
# db field (see migrations). Until confirmed new email is stored in
# unconfirmed email column, and copied to email column on successful confirmation.
config.reconfirmable = true

在中,您可以看到它是如何工作的。

最有可能的是,它没有在早期版本的Desive中实现(今天的版本是3.2.2)。