deviseでログイン時 Completed 401 Unauthorizedエラーについて
解決したいこと
deviseでログイン機能を実装した際に一度サインアップした名前とパスワードを正しく入力してログインした際に「Completed 401 Unauthorized」エラーが発生しました。
解決方法を教えていただきたいです。
発生している問題・エラー
Started POST "/users/sign_in" for 182.164.136.203 at 2022-04-15 07:22:56 +0000
Cannot render console from 182.164.136.203! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by Devise::SessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"DI1lyXfY4vDe7tDrK9XtORA/Muf8IdcFoNhSpE9d2wOZfQjy/fqkwwto/tyL2tBqaUUPaBvPfEdicJvQfrVYLA==", "user"=>{"name"=>"徳島", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Log in"}
Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)
Completed 401 Unauthorizedを調べたところ必要な情報が足りていないことが原因によるエラーとのこと。
考えられる原因
1、ApplicationControllerにある以下の記述が正しいかを確認しデバックツールを使いparamsにデータが入っているかも確認しました。
情報は送られているようですがafter_sign_in_path_for(resource)の一行下でbinding.pryを入力したところストップしなかったのでafter_sign_in_path_for(resource)には届いていないという認識です。
試して見たことを考えるとprotected内での記述に誤りがあると考えています。
before_action :configure_permitted_parameters, if: :devise_controller?
def after_sign_in_path_for(resource)
user_path(current_user.id)
end
protected
def configure_permitted_parameters
#binding.pry
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
devise_parameter_sanitizer.permit(:sign_in, keys: [:name])
end
*デバック
19: def configure_permitted_parameters
20: binding.pry
=> 21: devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
22: devise_parameter_sanitizer.permit(:sign_in, keys: [:name])
23: end
[1] pry(#<Devise::SessionsController>)> params
=> <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"gEWmTNLN6mQGy2C0g70oxvKcIGQ3ntZ+OOFV7Do8t6oVtct3WO+sV9NNToMjshWVi+Yd69BwfTz6SZyYC9Q0hQ==", "user"=>{"name"=>"徳島", "password"=>"000000", "remember_me"=>"0"}, "commit"=>"Log in", "controller"=>"devise/sessions", "action"=>"create"} permitted: false>
該当するソースコード
*/CookOP/app/views/devise/sessions/new.html.erb
<h2>Log in</h2>
<%= form_with model: @user, url: session_path(resource_name) do |f| %>
<div class="field">
<%= f.label :名前 %><br />
<%= f.text_field :name, autofocus: true, autocomplete: "name" %>
</div>
<div class="field">
<%= f.label :パスワード %><br />
<%= f.password_field :password, autocomplete: "current-password" %>
</div>
<% if devise_mapping.rememberable? %>
<div class="field">
<%= f.check_box :remember_me %>
<%= f.label :remember_me %>
</div>
<% end %>
<div class="actions">
<%= f.submit "Log in" %>
</div>
<% end %>
<%= render "devise/shared/links" %>
*/CookOP/app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
def after_sign_in_path_for(resource)
user_path(current_user.id)
end
def after_sign_out_path_for(resource)
root_path
end
def after_sign_up_path_for(resource)
user_path(current_user.id)
end
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
devise_parameter_sanitizer.permit(:sign_in, keys: [:name])
end
end
説明がわかりにくくてすいません、、、
解決方法を教えていただけると幸いです。
よろしくお願いします。
0 likes