2

Deviseは、基本認証またはomniauth認証のsign_upや、セッションのメンテナンス、確認パスワードの再送信などに使用できる素晴らしい宝石です。

しかし、deviseを使用して複数の電子メールアドレスを同じユーザーにマップすることは可能ですか?

私のように3,4のメールIDがあります

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

ユースケースと例

私はすでに最初のメールIDで登録しています。つまりsahil@abc.com、自動システムを使用してアカウントが作成されています。しかし、私はいつも他のemail_idを使用することを好みますsahil@xyz.com。だから、私はユーザーが同じ/異なるパスワードで上記の電子メールアドレスのいずれかを使用してログインできるシステムを構築したいと思います。ただし、ユーザーには1つのアカウントが必要です。

4

3 に答える 3

1

私は言うだろう:

  • メールフィールドが1つあります

  • 他のメールがどこかに保存されています

さまざまなフィールドに基づいてログインを許可することをDeviseに伝えることができます。

于 2013-01-21T11:20:28.187 に答える
1

キーを定義できるので、「authentication_keys」メソッドをオーバーライドしてみるのがよりクールな方法だと思います。

しかし、しかし、次のリンクには実用的な解決策があります:)

HTH

于 2013-01-21T11:52:29.313 に答える
1

これが私が正確に必要としたRoRDeviseです:ユーザー名または電子メールでサインインします

  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 に答える