Specify which controllers to exclude from before_filter

后端 未结 4 644
無奈伤痛
無奈伤痛 2020-12-13 01:11

I\'m using devise for authentication and have some before_filters in my application controller. Issue I\'m seeing is that when I try to logout the before_filter intercepts t

相关标签:
4条回答
  • 2020-12-13 01:20

    You can qualify a filter with :only or :except.

    before_filter :filter_name, :except => [:action1, :action2]
    

    Or if the filter (as I now see is the case in your situation) is defined in ApplicationController and you want to bypass it in a subclass controller, you can use a skip_before_filter with the same qualifications in the subclass controller:

    skip_before_filter :filter_name, :except => [:action1, :action2]
    
    0 讨论(0)
  • 2020-12-13 01:22

    Answers above are good except: DEPRECATION WARNING: skip_before_filter is deprecated and will be removed in Rails 5.1. Use skip_before_action instead.

    So please use before_action and skip_before_action instead of *-filter.

    0 讨论(0)
  • 2020-12-13 01:33

    In the controller where you want to skip a before filter specified in an inherited controller, you can tell rails to skip the filter

    class ApplicationController
      before_filter :authenticate_user!
    end
    
    class SessionsController < ApplicationController
      skip_before_filter :authenticate_user!
    end
    
    0 讨论(0)
  • 2020-12-13 01:41

    In config/application.rb

    config.to_prepare do
      Devise::SessionsController.skip_before_filter :authenticate_user!
    end
    

    Referenced by:

    How to skip a before_filter for Devise's SessionsController?

    0 讨论(0)
提交回复
热议问题