Rails 4 인증 된 루트 경로가 작동하지 않는 것으로 고안

톰 프랫

내가하려는 것

로그인하지 않은 사용자를 등록 # 새 페이지로 보내고 싶습니다.

로그인 정보를 입력하고 제출을 클릭하면 registrations # show 페이지로 이동합니다.

무슨 일이야

로그인하지 않으면 registrations # new 페이지로 이동합니다 (지금까지 정확함). 그러나 로그인 양식을 제출하면 리디렉션 루프와 함께 오류가 전송됩니다. 서버의 출력은이 블록이 계속해서 반복됩니다.

Started GET "/" for 127.0.0.1 at 2013-09-25 02:31:59 -0400
Processing by RegistrationsController#new as HTML
  User Load (0.7ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 8 ORDER BY "users"."id" ASC LIMIT 1
Redirected to http://lvh.me:3000/
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 2ms (ActiveRecord: 0.7ms)

나는 그것을 알아낼 수없는 것 같다. 수동으로 다른 페이지로 이동하여 확인할 수 있지만 authenticated루트 경로가 올바르게 작동하지 않는 것을 알 수 있으므로 로그인합니다. 내 경로 파일에서 몇 가지 다른 조합을 시도했지만 얻을 수없는 것 같습니다. 내가 사용하는 코드는 이 스레드를 기반으로합니다.

내 코드

내 응용 프로그램 컨트롤러에는 before_filter :authenticate_user!

내 경로 파일 :

devise_for :users, :controllers => {
  :registrations => "registrations"
}

devise_scope :user do
  root to: "registrations#new"
end

authenticated :user do
  root to: "registrations#show", :as => "profile"
end

unauthenticated do
  root to: "registrations#new", :as => "unauthenticated"
end
rails_id

먼저 사용자 정의해야합니다 Devise::RegistrationsController(파일 추가 가능 app/controllers/registrations_controller.rb).

그리고 devise 에서 prepend_before_filter참조하십시오.registrations_controller.rb

prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
prepend_before_filter :authenticate_scope!, :only => [:edit, :update, :destroy]

show작업 추가prepend_before_filter :authenticate_scope!

registrations_controller.rb

class RegistrationsController < Devise::RegistrationsController
  prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
  prepend_before_filter :authenticate_scope!, :only => [:edit, :update, :destroy, :show]

  # GET /resource/sign_up
  def new
    super
  end

  # POST /resource
  def create
    super
  end

  # GET /resource/edit
  def edit
    super
  end

  def update
    super
  end

  # DELETE /resource
  def destroy
    super
  end

  def show
  end


  protected

  def after_sign_up_path_for(resource)
    after_sign_in_path_for(resource)
  end

end

또한 장치 등록 (편집 및 새 템플릿) 보기를에 복사하고 프로필 페이지 용 폴더에 /app/views/registrations/파일 show.html.erb만들 수 있습니다 /app/views/registrations/.

고안 경로의 경우 다음과 같습니다.

devise_for :users, :skip => [:registrations]

devise_for :users, :controllers => {
  :registrations => "registrations"
}

authenticated :user do
  devise_scope :user do
    root to: "registrations#show", :as => "profile"
  end
end

unauthenticated do
  devise_scope :user do
    root to: "registrations#new", :as => "unauthenticated"
  end
end

마지막으로, 당신은의 "경로"를 설정 after_sign_in_path_for(resource)하고 after_sign_out_path_for(resource_or_scope)파일에 application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery

  private

   def after_sign_in_path_for(resource)
     # After you enter login info and click submit, I want you to be sent to the registrations#show page
     profile_path
   end
   def after_sign_out_path_for(resource_or_scope)
     new_user_session_path
   end
end

참고 : 샘플 앱을 만들기 위해 이것을 시도했으며 작동합니다. 여기 에서 로그인 할 때 로그를 확인하고 여기 에서 로그 아웃 하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

실제 프로세스가 작동하지 않는 동안 실행중인 것으로 나열된 Tensorboard 인스턴스

분류에서Dev

루프가 작동하지 않는 동안 Python 미니 게임으로 작성된 Discord Bot

분류에서Dev

잘못된 경로가 Rails 4를 생성했기 때문에 html img 태그가 작동하지 않음

분류에서Dev

루트로 로그인하는 동안에는 자동 완성이 작동하지 않습니다.

분류에서Dev

루트로 실행하지 않고 로컬 사용자 인증

분류에서Dev

Angular Firebase ng 사용자가 인증 된 경우 리스너가 페이지 새로 고침에서 작동하지 않습니다.

분류에서Dev

그 / 그녀가 새로운 라인에 Enter 키를 누르면 사용자는 동안 루프 밖으로 받아야합니다. 그러나 그것은 작동하지 않습니다 그것은 새로운 라인에가는 유지

분류에서Dev

동적으로 인스턴스화 된 구성 요소에서 변경 감지가 작동하지 않는 것 같습니다.

분류에서Dev

Rails4 + Devise : 사용자가 인증되지 않은 경우 "숨기기"경로

분류에서Dev

루프가 제대로 작동하지 않는 동안

분류에서Dev

루프가 제대로 작동하지 않는 동안 수행

분류에서Dev

루프가 예상대로 작동하지 않는 동안 powershell

분류에서Dev

인증서 / 키 불일치가 주어지면 트위스트 된 starttls로 작동하지 않는 시도 / 제외

분류에서Dev

중첩 된 While 루프가 원하는 방식으로 작동하지 않음

분류에서Dev

이 증가로 해야하는 경우 감소에 루프를 어떻게 일으킬 것인가?

분류에서Dev

Rails 4의 중첩 된 양식이 작동하지 않는 것 같습니다.

분류에서Dev

반복이 foreach 루프 내부로 이동하는 동안 인쇄가 작동하지 않습니다.

분류에서Dev

rails4가 작동하지 않는 destroy_session_path를 고안하십시오.

분류에서Dev

rails4가 작동하지 않는 destroy_session_path를 고안하십시오.

분류에서Dev

인증 된 사용자를 특정 경로로 리디렉션하는 Rails Devise

분류에서Dev

WCF는 IIS에서 비활성화 된 익명 인증 옵션으로 작동하지 않습니다.

분류에서Dev

Rails는 인증을 고안하고 로그인 화면 레이아웃을 제외합니다.

분류에서Dev

Angular 4, Firebase 인증에서 Google로 로그인하면 새로 고칠 때까지 이메일 로그인이 작동하지 않습니다.

분류에서Dev

경로가 작동하지 않고 컨트롤러의 변수가 정의되지 않은 것으로 나타납니다.

분류에서Dev

Nginx : 클라이언트 인증서 인증은 자체 생성으로 작동하지만 "공식"에서는 작동하지 않습니다.

분류에서Dev

Rails 4 : devise로 user_id만으로 사용자를 인증하는 방법

분류에서Dev

Rails 4 : devise로 user_id만으로 사용자를 인증하는 방법

분류에서Dev

파일에 텍스트를 추가하는 동안 lsof는 파일이 열려 있거나 액세스 된 것으로 표시하지 않습니다.

분류에서Dev

cakephp4 인증 로그인이 작동하지 않습니다.

Related 관련 기사

  1. 1

    실제 프로세스가 작동하지 않는 동안 실행중인 것으로 나열된 Tensorboard 인스턴스

  2. 2

    루프가 작동하지 않는 동안 Python 미니 게임으로 작성된 Discord Bot

  3. 3

    잘못된 경로가 Rails 4를 생성했기 때문에 html img 태그가 작동하지 않음

  4. 4

    루트로 로그인하는 동안에는 자동 완성이 작동하지 않습니다.

  5. 5

    루트로 실행하지 않고 로컬 사용자 인증

  6. 6

    Angular Firebase ng 사용자가 인증 된 경우 리스너가 페이지 새로 고침에서 작동하지 않습니다.

  7. 7

    그 / 그녀가 새로운 라인에 Enter 키를 누르면 사용자는 동안 루프 밖으로 받아야합니다. 그러나 그것은 작동하지 않습니다 그것은 새로운 라인에가는 유지

  8. 8

    동적으로 인스턴스화 된 구성 요소에서 변경 감지가 작동하지 않는 것 같습니다.

  9. 9

    Rails4 + Devise : 사용자가 인증되지 않은 경우 "숨기기"경로

  10. 10

    루프가 제대로 작동하지 않는 동안

  11. 11

    루프가 제대로 작동하지 않는 동안 수행

  12. 12

    루프가 예상대로 작동하지 않는 동안 powershell

  13. 13

    인증서 / 키 불일치가 주어지면 트위스트 된 starttls로 작동하지 않는 시도 / 제외

  14. 14

    중첩 된 While 루프가 원하는 방식으로 작동하지 않음

  15. 15

    이 증가로 해야하는 경우 감소에 루프를 어떻게 일으킬 것인가?

  16. 16

    Rails 4의 중첩 된 양식이 작동하지 않는 것 같습니다.

  17. 17

    반복이 foreach 루프 내부로 이동하는 동안 인쇄가 작동하지 않습니다.

  18. 18

    rails4가 작동하지 않는 destroy_session_path를 고안하십시오.

  19. 19

    rails4가 작동하지 않는 destroy_session_path를 고안하십시오.

  20. 20

    인증 된 사용자를 특정 경로로 리디렉션하는 Rails Devise

  21. 21

    WCF는 IIS에서 비활성화 된 익명 인증 옵션으로 작동하지 않습니다.

  22. 22

    Rails는 인증을 고안하고 로그인 화면 레이아웃을 제외합니다.

  23. 23

    Angular 4, Firebase 인증에서 Google로 로그인하면 새로 고칠 때까지 이메일 로그인이 작동하지 않습니다.

  24. 24

    경로가 작동하지 않고 컨트롤러의 변수가 정의되지 않은 것으로 나타납니다.

  25. 25

    Nginx : 클라이언트 인증서 인증은 자체 생성으로 작동하지만 "공식"에서는 작동하지 않습니다.

  26. 26

    Rails 4 : devise로 user_id만으로 사용자를 인증하는 방법

  27. 27

    Rails 4 : devise로 user_id만으로 사용자를 인증하는 방법

  28. 28

    파일에 텍스트를 추가하는 동안 lsof는 파일이 열려 있거나 액세스 된 것으로 표시하지 않습니다.

  29. 29

    cakephp4 인증 로그인이 작동하지 않습니다.

뜨겁다태그

보관