Sorceryを使ったログイン機能実装時のエラー①
Sorceryを使ったログイン機能の実装を試みたところ、エラーでかなりハマったので備忘録として残そうと思う。
エラー発生時のコード
user_sessions/new.html.erb
<div class="container"> <div class="row"> <div class=" col-md-10 offset-md-1 col-lg-8 offset-lg-2"> <%= form_with(scope: :session, url: login_path, local: true) do |f| %> <%= f.label :email %> <%= f.email_field :email, class: 'form-control' %> <%= f.label :password %> <%= f.password_field :password, class: 'form-control' %> <%= f.submit "ログイン", class: "btn btn-primary" %> <% end %> <div class='text-center'> <a href="/users/new">登録ページへ</a> <a href="#">パスワードをお忘れの方はこちら</a> </div> </div> </div> </div>
user_sessions_controller.rb
def new @user = User.new end def create @user = login(params[:email], params[:password]) if @user redirect_back_or_to(root_path, success: 'ログインしました') else flash.now[:alert] = 'Login failed' render action: 'new' end end
・登録したユーザーでログインを試みると、全て user_sessions/new.html.erb にレンダリングされてしまうという現象が発生。
postリクエストを送信した時のサーバーログ
Started POST "/login" for ::1 at 2020-10-13 15:27:01 +0900 Processing by UserSessionsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"ujWDmNYv6jw70d8mon3AnjWSjKUdj+5udOtEQ75U/aDphHC6Ymi4CqpD3E3z1sqV2JRJr8mj/At7txKIe/ Dfrw==", "user_sessions"=>{"email"=>"oka@gmail.com", "password"=>"[FILTERED]"}, "commit"=>"ログイン"} Rendering user_sessions/new.html.erb within layouts/application Rendered user_sessions/new.html.erb within layouts/application (2.6ms) Rendered shared/_before_login_header.html.erb (1.1ms) Rendered shared/_footer.html.erb (0.4ms) Completed 200 OK in 70ms (Views: 69.0ms | ActiveRecord: 0.0ms)
・render action: 'new
のコードを、redirect_to root_url
に変えてみるとhomeに。redirect_to new_user_path
に変えてみると新規登録画面に飛ぶように。
・どうやら全てelse処理されている様子・・・
・色々試みるも、なかなか解消されないので、最初から見直すことにした。
②に続く