2

Devise是一个很棒的 gem,可用于基本或omniauth 身份验证注册和其他事情,如会话维护、重新发送确认密码等。

但是是否可以使用设计将多个电子邮件地址映射到同一用户?

就像我有 3,4 个电子邮件 ID,例如

  1. sahil@abc.com
  2. sahil@xyz.com
  3. sahil@mno.com

用例和示例

我已经使用我的第一个电子邮件 ID 进行了注册,即sahil@abc.com使用自动化系统并创建了帐户。但我总是更喜欢使用我的其他 email_id 即sahil@xyz.com。所以,我想建立一个系统,用户可以使用上述任何一个具有相同/不同密码的电子邮件地址登录。但是用户应该只有一个帐户。

4

3 回答 3

1

这是我真正需要的 RoR 设计:使用用户名或电子邮件登录

  def self.find_for_database_authentication(conditions={})
    (self.find_by_email(conditions[:email])) || (AuthorizedEmail.confirmed.find_by_email(conditions[:email]).user if AuthorizedEmail.confirmed.find_by_email(conditions[:email]).present?)
  end

它的作用是:

  1. 首先尝试通过搜索电子邮件ID来查找用户记录以进行身份​​验证。
  2. 如果它得到记录,它会返回记录,否则我们进入下一部分。
  3. 如果表中存在任何经过​​验证和确认的电子邮件,它会在授权电子邮件表中查找。如果有这样的条目,它会尝试查找与该特定授权电子邮件相关的用户并将其返回。
于 2013-01-31T12:28:40.157 回答
1

我认为更酷的方法是尝试覆盖 'authentication_keys' 方法,因为它允许您定义 keys

但是,以下链接有一个可行的解决方案:)

高温高压

于 2013-01-21T11:52:29.313 回答
1

我会说:

  • 你有一个电子邮件字段

  • 您在某处存储了其他电子邮件

您可以告诉 Devise您允许基于不同字段登录

于 2013-01-21T11:20:28.187 回答