Sam
Sam

Reputation: 5250

Filter chain halted error with devise gem

I am using devise with rails. I have generated User model in devise and I didn't have user controller and home controller . My root page is devise/sessions#new.

My root path

 devise_scope :user do
   root :to => "users/sessions#new"
 end
 devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", :registrations => "users/registrations" }

when I run localhost:3000 I am getting the following error.

Filter chain halted as :require_no_authentication rendered or redirected. 

Started GET "/" for 127.0.0.1 at 2014-02-19 10:07:46 +0530
Processing by Devise::SessionsController#new as HTML
  User Load (0.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1
Redirected to http://localhost:3000/
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 3ms (ActiveRecord: 0.2ms)

The solution I found on internet is that add this in sessions controller prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ] . My doubt is how can I access sessions controller. It is not generated in controller it is inbuilt module or is there any other way to solve this.

app/controller/users/session_controller.rb

class Users::SessionsController < Devise::SessionsController
  prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
end

Upvotes: 2

Views: 10384

Answers (1)

vahid abdi
vahid abdi

Reputation: 10288

You can override session controller like this:

route.rb

devise_scope :user do
  root to: "users/sessions#new"
end

app/controller/users/sessions_controller.rb

class Users::SessionsController < Devise::SessionsController
  prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]
end

Upvotes: 3

Related Questions