복붙노트

[RUBY-ON-RAILS] 어떻게 고안의 SessionsController에 대한 before_filter를 건너 뛰려면?

RUBY-ON-RAILS

어떻게 고안의 SessionsController에 대한 before_filter를 건너 뛰려면?

내와 ApplicationController에 before_filter이있다; 그건 내 프로젝트의 모든 컨트롤러이다.

나는 행동을 만들 궁리의 SessionsController에 대해 어떻게 skip_before_filter 수 있습니까?

해결법

  1. ==============================

    1.우리는 이런 일을했다 :

    우리는 이런 일을했다 :

    첫번째로, 자신의 세션 컨트롤러를 만들, 제대로 상속해야합니다 :

    class SessionsController < Devise::SessionsController
      skip_before_filter :foobar
    

    그런 다음 경로를 수정

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

    또는 당신은 원숭이 패치 고안의 세션 컨트롤러는 없습니다.

  2. ==============================

    2.여기 내 동료가 날을 보여 주었다 방법이다 :

    여기 내 동료가 날을 보여 주었다 방법이다 :

    # In config/application.rb
    module YourAppNameHere
      class Application < Rails::Application
      # Whatever else is already here...
    
        # The part to add
        config.to_prepare do
          Devise::SessionsController.skip_before_filter :your_before_filter_here
        end
      end
    end
    
  3. ==============================

    3.나는 최근에 내 application_controller에서 필터이 문제를 가지고 나는 skip_before_filter를 사용하여 해결

    나는 최근에 내 application_controller에서 필터이 문제를 가지고 나는 skip_before_filter를 사용하여 해결

    skip_before_filter :check_subdomain!, if: :devise_controller?
    
  4. ==============================

    4.여기에 lib 디렉토리 / devise_sessions_controller_decorator.rb 또 다른 방법이있다 :

    여기에 lib 디렉토리 / devise_sessions_controller_decorator.rb 또 다른 방법이있다 :

    module DeviseSessionsControllerDecorator
      extend ActiveSupport::Concern
    
      included do
        skip_before_filter :your_filter_name
      end
    end
    
    Devise::SessionsController.send(:include, DeviseSessionsControllerDecorator)
    

    클래스가 개발 모드에 캐시되지 않기 때문에, 당신은에 설정 / 환경 / development.rb 같은 것을 추가해야 할 수 있습니다 :

    config.to_prepare do
      Devise::SessionsController.send(:include, DeviseSessionsControllerDecorator)
    end
    
  5. ==============================

    5.내 동료가 나에게 내 다른 대답에 게시하는 방법을 보여 주었다 전에, 나는 이런 짓을. 나는 경우에이 게시하도록하겠습니다 당신은 간단하게 생각합니다.

    내 동료가 나에게 내 다른 대답에 게시하는 방법을 보여 주었다 전에, 나는 이런 짓을. 나는 경우에이 게시하도록하겠습니다 당신은 간단하게 생각합니다.

    class ApplicationController < ActionController::Base
      # ...
      before_filter :do_something
    
      def do_something
        unless params[:controller] == 'devise/sessions'
          # ...
        end
      end
    end
    
  6. ==============================

    6.당신은 단순히 유증 컨트롤러 여부 필터 방식에서 확인할 수 있습니다.

    당신은 단순히 유증 컨트롤러 여부 필터 방식에서 확인할 수 있습니다.

      if params[:controller] != 'devise/sessions'
    
  7. ==============================

    7.어떤 PARAMS하여 않는 블록 필터링에 대한 before_filter 배치 [: 컨트롤러]

    어떤 PARAMS하여 않는 블록 필터링에 대한 before_filter 배치 [: 컨트롤러]

    def some_before_action
      unless params[:controller] == "sessions_controller_for_devise_name"
          ... #=> do the stuff here
      end 
    end
    

    단지 필터 전에를 사용해야하는 행동인가

    before_filter :action, :only => ...
    

    하고 다른 사람을 승인합니다.

    여기 발견

  8. from https://stackoverflow.com/questions/6209663/how-to-skip-a-before-filter-for-devises-sessionscontroller by cc-by-sa and MIT license