Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Specify which controllers to exclude from before_filter

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 that and keeps me on the view that's I've setup in the before_filter. Is there any way for me to specify which controllers should be excluded from the application controller or some other file?

like image 604
chaz hamilton Avatar asked May 15 '11 22:05

chaz hamilton


3 Answers

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
like image 185
Jesse Wolgamott Avatar answered Oct 20 '22 16:10

Jesse Wolgamott


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]
like image 30
Don Roby Avatar answered Oct 20 '22 15:10

Don Roby


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?

like image 13
Taimoor Changaiz Avatar answered Oct 20 '22 17:10

Taimoor Changaiz