无法使用skip_before_filter在Rails中使用ActiveAdmin

时间:2012-01-17 23:31:08

标签: ruby-on-rails devise activeadmin before-filter

我正在使用devise gem进行身份验证,并在我的ApplicationController中使用以下的before_filter:

  before_filter :require_login

  def require_login
    unless user_signed_in? || params[:controller] == 'devise/sessions'
      flash[:error] = "You must be logged in to access that page."
      redirect_to new_user_session_path
    end
  end

我最近实现了ActiveAdmin gem,并尝试让skip_before_filter为ActiveAdmin工作,以便我可以访问ActiveAdmin。我尝试了这个post中概述的方法,将以下内容添加到config / initializers / active_admin.rb中:

  config.skip_before_filter :require_login

并将以下内容添加到我的一个管理模型文件listing.rb:

ActiveAdmin.register Listing do

  controller do
    skip_before_filter :require_login
  end

end

但即使重新启动服务器和浏览器,它似乎也无法正常工作。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

所以有两件事:

首先:我认为你无效率地使用Devise。而不是application_controller上的自定义登录方法,您应该:

class ApplicationController 
  before_filter :authenticate_user!
end

就是这样 - 其他一切都有效。

第二:Active Admin使用不同的用户类 - “admin_user”(而不是“user”)。默认情况下,您将使用以下凭据:

email: admin@example.com 
password: password