はじめに
deiviseを使用していて、ログインできない現状に悩まされたので、備忘録として残します。
開発環境
macOS Big Sur 11.3.1
Rails 2.7.2
PostgreSQL 13.2
現状
アカウント登録し、ログアウト後にログインすると、「名前、Eメールまたはパスワードが違います。」と表示され、ログインできない。
ログを確認すると、Completed 401 Unauthorized
認証に失敗していることが、原因とのこと。
今回の原因
config.authentication_keys = [:name, :email]
「ログイン時に入力された name と email の両方が一致して,かつパスワードが正しくないとログインできない」という設定をしていたのが、原因でした。
対処法
config.authentication_keys = [:email]
:nameを削除して、サーバーを立ち上げて確認すると、出来ました!
学び
今回、メンターさんに色々アドバイス頂きました!
・必ずログを確認すること(ここ重要!)
認証が失敗している場合は、
・原因が色々考えられるので、1つづ潰していく必要があること
・問題の切り分け方
・新しくユーザーを作成して、ログイン情報が確実に間違っていないことを確認
出来た → 解決!
出来ない → view、もしくはapplication_contorollerに原因がありそう
・application_contorolerに追記した部分を見直す
解決 or 未解決
・viewに追記した部分を確認
解決 or 未解決
現役のエンジニアの方々は、このように問題を切り分けて考えていることがわかり、非常に勉強になりました。エラー続きですが、エラーがないとこのような気付きもないので、ラッキーと思うようにしています
同じようなエラーで躓いている方々へ、参考になると幸いです。