【问题标题】:Filter chain halted error with devise gem设计 gem 的过滤器链停止错误
【发布时间】:2014-03-19 05:47:18
【问题描述】:

我正在使用带有导轨的设计。我已经在设计中生成了 User 模型,但我没有 user controller 和 home controller 。我的根页面是devise/sessions#new

我的根路径

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

当我运行 localhost:3000 时出现以下错误。

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)

我在互联网上找到的解决方案是将其添加到会话控制器 prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ] 中。我的疑问是如何访问会话控制器。它不是在控制器中生成的,它是内置模块,或者有没有其他方法可以解决这个问题。

app/controller/users/session_controller.rb

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

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 devise


【解决方案1】:

您可以像这样覆盖会话控制器:

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

【讨论】:

  • @vanda- 我再次遇到同样的错误。我已经更新了我所做的事情
  • @Jeff 这是因为你已经登录了。使用skip_before_filter 而不是prepend_before_filter 看看thisthis
  • 我发现了真正的错误。在根路径中,我不应该给出登录路径。我需要提及一些其他路径
猜你喜欢
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 2016-02-13
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
相关资源
最近更新 更多