使用相同的帐户设计多个email_id吗?

时间:2013-01-21 11:16:11

标签: ruby-on-rails email authentication devise

Devise是一个非常棒的宝石,可用于基本或omniauth身份验证sign_up以及会话维护,重新发送确认密码等其他内容。

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

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

  1. sahil@abc.com
  2. sahil@xyz.com
  3. sahil@mno.com
  4. 用例和示例

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

3 个答案:

答案 0 :(得分:1)

我会说:

  • 您有一个电子邮件字段

  • 您在其他地方存储了其他电子邮件

你可以告诉Devise you allow login based on different fields

答案 1 :(得分:1)

我认为更酷的方法是尝试覆盖'authentication_keys'方法,因为它allows you to define the keys

但是,以下链接有一个working solution:)

HTH

答案 2 :(得分:1)

以下是我所需要的RoR Devise: Sign in with username OR email

  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. 它会在授权的电子邮件表中找到表中是否存在任何经过​​验证和确认的电子邮件。如果有这样的条目,它会尝试找到与该特定授权电子邮件相关的用户并返回该条目。