【问题标题】:How to change email address of a user in devise "safely"?如何“安全”地更改用户的电子邮件地址?
【发布时间】:2011-01-11 10:24:23
【问题描述】:

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

但我希望允许用户更改电子邮件地址。

如果我允许用​​户编辑电子邮件地址,并且用户指定了一个“不正确”(即错误的拼写错误)的电子邮件地址,然后用户退出,并且用户也会忘记什么错字的电子邮件是,现在用户无法访问用户帐户!

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

【问题讨论】:

    标签: ruby-on-rails-3 devise


    【解决方案1】:

    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 你可能会看到它是如何工作的。

    【讨论】:

    • 很可能它没有在设计的早期版本中实现(今天的版本是 3.2.2)。
    【解决方案2】:

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

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

    取消确认用户:

    user = User.find(1)
    if user.confirmed?
      user.confirmed_at = nil
      user.save(:validate => false)
    end
    

    重新发送电子邮件确认:

    user = User.find(1)
    user.send_confirmation_instructions
    

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2011-09-09
      • 1970-01-01
      • 2021-06-10
      • 2017-05-17
      • 2014-02-10
      • 2018-08-21
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多