66445


現在Railsアプリを作成の中で、Devise Gemを使用しています。  
デフォルトではログイン時に、メールアドレスとパスワードでログイン出来るかと思います。  
そこにユーザ名も追加したいと思い、調べていると大体の記事が、  
**ユーザ名とパスワード** 又は **メールアドレスとパスワード** のログイン方法についてしか説明されていませんでした。  
出来れば **ユーザ名とメールアドレスとパスワード** の3つでログイン機能を実装したいと考えています。  
何かご教授頂ければ幸いです。

[実行した事]  
config/initializers/devise.rb に  
`config.authentication_keys = [:username]`を追加すれば、  
ユーザ名とパスワードでログインできたので、  
`config.authentication_keys = [:email]`も追加したら、  
メールアドレスとパスワードだけでログイン出来てしまう。

[app/controllers/application_controller.rb]

[code]

    class ApplicationController < ActionController::Base
      protect_from_forgery with: :exception
      before_action :configure_permitted_parameters, if: :devise_controller?
    
      protected
    
      def configure_permitted_parameters
        added_attrs = [:email, :username, :password, :password_confirmation]
        devise_parameter_sanitizer.permit :sign_up, keys: added_attrs
        devise_parameter_sanitizer.permit :account_update, keys: added_attrs
        devise_parameter_sanitizer.permit :sign_in, keys: added_attrs
      end
    end
    
[/code]


CC BY-SA 4.0
2020-05-08T05:58:39.483
66422
2020-05-09T01:56:40.467
2020-05-08T06:03:25.820
3060
39925
question
ruby-on-rails ruby devise
deviseのログイン時に、ユーザ名、メールアドレス、パスワードでログインしたい


<https://github.com/heartcombo/devise/wiki/How-To:-Allow-users-to-sign-in-
using-their-username-or-email-address>  
この記事を参考にしてみてはいかがでしょうか。`login`という仮想の属性を定義するのがポイントのようです。


CC BY-SA 4.0
2020-05-08T06:28:28.473
66424
2020-05-08T06:28:28.473
442
66422
answer


2度代入すると後から代入した方だけ有効になると思います。

authentication_key **s** と複数形になっているので、

[code]

    config.authentication_keys = [:username, :email]
    
[/code]

のように配列で両方同時に指定すれば良いのではないでしょうか。

devise の実装をみてこう設定できそうと確認しただけで、実際に試したわけではないので、違っていたらすいません。


CC BY-SA 4.0
2020-05-09T01:56:40.467
66445
2020-05-09T01:56:40.467
14277
66422
answer