【发布时间】:2011-01-11 10:24:23
【问题描述】:
默认情况下,devise 使用电子邮件地址进行注册和登录。
但我希望允许用户更改电子邮件地址。
如果我允许用户编辑电子邮件地址,并且用户指定了一个“不正确”(即错误的拼写错误)的电子邮件地址,然后用户退出,并且用户也会忘记什么错字的电子邮件是,现在用户无法访问用户帐户!
如何最好地解决这个问题? (除了创建一个单独的、不可更改的用户名字段,该字段将始终允许用户登录)
【问题讨论】:
默认情况下,devise 使用电子邮件地址进行注册和登录。
但我希望允许用户更改电子邮件地址。
如果我允许用户编辑电子邮件地址,并且用户指定了一个“不正确”(即错误的拼写错误)的电子邮件地址,然后用户退出,并且用户也会忘记什么错字的电子邮件是,现在用户无法访问用户帐户!
如何最好地解决这个问题? (除了创建一个单独的、不可更改的用户名字段,该字段将始终允许用户登录)
【问题讨论】:
Devise 开箱即用。以下是初始化程序的信息:
# 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
在confirmable module 你可能会看到它是如何工作的。
【讨论】:
如果用户更改电子邮件,您可以强制用户再次确认他的帐户。
一旦您更新了相关用户的密码,您需要取消确认该用户,然后重新发送确认邮件。
取消确认用户:
user = User.find(1)
if user.confirmed?
user.confirmed_at = nil
user.save(:validate => false)
end
重新发送电子邮件确认:
user = User.find(1)
user.send_confirmation_instructions
希望有帮助!
【讨论】: