2
장애 응용 프로그램을 사용할 때 감시인 (감시자 만 사용, 감시자없이)을 사용하여 인증하는 데 문제가 있습니다.실패 응용 프로그램을 사용할 때 감시자 인증이 실패 함
오류 응용 프로그램을 사용하지 않도록 구성된 수호자를 사용할 때이 오류가 발생하지 않습니다.
도와주세요!
내 warden.rb 설정/초기화/warden.rb :
Rails.application.config.middleware.use Warden::Manager do |manager|
manager.default_strategies :password
manager.failure_app = -> (env) {
SessionsController.action(:new).call(env) }
end
Warden::Manager.serialize_into_session do |user|
user.id
end
Warden::Manager.serialize_from_session do |id|
User.find(id)
end
Warden::Strategies.add(:password) do
def authenticate!
user = User.find_by(email: params['email'])
if user && user.authenticate(params['password'])
success! user
else
fail 'Invalid email or password'
end
end
end
내 routes.rb :
Rails.application.routes.draw do
root 'home#index'
get 'sessions/new'
post 'sessions/create'
get 'sessions/destroy'
get 'login', to: 'sessions#new'
post 'login', to: 'sessions#create'
get 'logout', to: 'sessions#destroy'
resources :users
end
내 SessionsController :
class SessionsController < ApplicationController
def new
flash.now[:alert] = warden.message if warden.message.present?
end
def create
warden.authenticate!
redirect_to root_path, notice: 'Logged in!'
end
def destroy
warden.logout
redirect_to root_path, notice: 'Logged out!'
end
end
내 와 ApplicationController :
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
private
def current_user
warden.user
end
def warden
request.env['warden']
end
helper_method :current_user
end
오류 화면 :
내 역 추적 :
이것은 당신의 CSRF의 authentici과 관련이있다