我正在使用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
但即使重新启动服务器和浏览器,它似乎也无法正常工作。
我做错了什么?
答案 0 :(得分:1)
所以有两件事:
首先:我认为你无效率地使用Devise。而不是application_controller上的自定义登录方法,您应该:
class ApplicationController
before_filter :authenticate_user!
end
就是这样 - 其他一切都有效。
第二:Active Admin使用不同的用户类 - “admin_user”(而不是“user”)。默认情况下,您将使用以下凭据:
email: admin@example.com
password: password