[RUBY-ON-RAILS] 로그인 후 유증 리디렉션 실패
RUBY-ON-RAILS로그인 후 유증 리디렉션 실패
내가 찾은 모든 질문은 도우미와 성공적인 로그인에 대한 관련 after_sign_in_path_for (자원)
나는 사이트의 인덱스에 로그인 양식을 가지고 있고, 로그인이 실패 할 경우는 "사용자 / sign_in"로 리디렉션
그러나 어떻게 로그인 실패 내 "사이트 # 지수"로 리디렉션 할 수 있습니까?
해결법
-
==============================
1.서버를 다시 시작하는 것을 잊지 마십시오.
서버를 다시 시작하는 것을 잊지 마십시오.
나는이 작업을 수행 할 수있는 쉬운 방법이 있다고 생각하지 않습니다. 행운을 빕니다.
-
==============================
2.당신이 당신의 자신의 SessionsController를 사용하는 경우, 당신은 다시 할당 할 수 있습니다 auth_options의 리콜 값이 warden.authenticate을 실행하기 전에 당신이 원하는 컨트롤러 # 방법을 리콜 (auth_options), 예를 들어! :
당신이 당신의 자신의 SessionsController를 사용하는 경우, 당신은 다시 할당 할 수 있습니다 auth_options의 리콜 값이 warden.authenticate을 실행하기 전에 당신이 원하는 컨트롤러 # 방법을 리콜 (auth_options), 예를 들어! :
응용 프로그램 / 컨트롤러 / 사용자 / sessions_controller.rb에서
class Users::SessionsController < Devise::SessionsController #... def create #... auth_options = { :recall => 'site#index', :scope => :user } resource = warden.authenticate!(auth_options) #... end #... end
이 방법을 사용하면 CONFIGS을 사용자 정의 FailureApp을 작성하고 수정할 필요가 없습니다.
-
==============================
3.이 유증 3.1.0으로 일어나는 것이다
이 유증 3.1.0으로 일어나는 것이다
Started POST "/users/sign_in" Processing by Devise::SessionsController#create Completed 401 Unauthorized Processing by Devise::SessionsController#new
새로운 때문에 보석의 끝에서 정의 된 auth_options의 호출되는 / 유증-3.1.0 / 응용 프로그램 / 컨트롤러 / 궁리 / sessions_controller.rb
당신은 만드는 작업에 사용되는 auth_options를 재정의해야합니다. 내 레일 응용 프로그램의 응용 프로그램 / 컨트롤러 / 궁리 / sessions_controller.rb에서 컨트롤러를 복사하고이 같은 auth_options 방법을 대체
def auth_options { :scope => resource_name, :recall => "Home#new" } end
이 트릭을 수행하지만 URL은 여전히 / 사용자 / sign_in입니다
나는뿐만 아니라 그 문제를 해결하려고합니다.
-
==============================
4.당신은 기본 sign_in 경로를 변경할 수 있습니다.
당신은 기본 sign_in 경로를 변경할 수 있습니다.
https://github.com/plataformatec/devise/wiki/How-To:-Change-the-default-sign_in-and-sign_out-routes 체크 아웃
-
==============================
5.Marcao의 대답에 정교하게, 내가보기 엔 더 나은 무슨 일이 일어나고 있는지 이해하기 위해 당신의 CustomFailure의 응답 방법에 약간의 디버거를 배치하는 것이 좋습니다.
Marcao의 대답에 정교하게, 내가보기 엔 더 나은 무슨 일이 일어나고 있는지 이해하기 위해 당신의 CustomFailure의 응답 방법에 약간의 디버거를 배치하는 것이 좋습니다.
Class CustomFailure < Devise::FailureApp def respond binding.pry super end end
당신이 응답 방법에 대한 FailureApp 고안 소스 코드를 보면 그것은 아주 쉽게에 무슨 일이 일어나고 있는지 이해하는 것입니다.
def respond if http_auth? http_auth elsif warden_options[:recall] recall else redirect end end
그래서 REDIRECT_URL를 반환하기 위해 예를 들어, 당신은 확실히 당신의 응답 코드를 조건문 결국 리디렉션을 반환 있는지 확인하려는 것입니다.
그러나 당신이 http_auth 방법에 정의 된대로 어쩌면 표준 (401 개) 상태를 반환 할 경우, 확인하려는 사용자의 응답 방법 코드를 반환 http_auth 그.
따라서 가치는 http_auth의 정의를 조사하기 위해 잠시입니까? request.xhr : 특히,주의? (0 실제로 루비에서 true로 평가하는 리콜) JSON 요청에 대해 0을 반환 방법
def http_auth? if request.xhr? Devise.http_authenticatable_on_xhr else !(request_format && is_navigational_format?) end end
그리고 어쩌면 당신이 원하는 응답을 제어하기 위해 config.http_authenticatable_on_xhr 또는 config.navigational_formats에 대한 초기화 / 유증 파일을 확인하십시오. 이 구성은 정말 무엇을 고안 반환에 영향을 미칠 수 종종 그것 때문에 후드 여기에 무엇에 예기치 않은 동작이 발생할 수 있습니다.
from https://stackoverflow.com/questions/5832631/devise-redirect-after-login-fail by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 어떻게 지정된 로케일에 sqlite3를 텍스트를 정렬하려면? (0) | 2020.02.05 |
---|---|
[RUBY-ON-RAILS] 비계 후 데이터베이스를 마이그레이션 할 수 없습니다. 2.2 루비 온 레일즈 튜토리얼 마이클 하틀 (0) | 2020.02.05 |
[RUBY-ON-RAILS] 액티브 또는 쿼리 해시 표기 (0) | 2020.02.05 |
[RUBY-ON-RAILS] 액티브 쿼리 연합 (0) | 2020.02.05 |
[RUBY-ON-RAILS] 어떻게 레일에서 같은 양식 버튼을 제출 여러 만듭니 까? (0) | 2020.02.05 |