在我的应用程序中,我已经成功安装了Devise,它的工作非常好。然后我第一次为管理员面板安装了 Active Admin 并设置了路径。现在,当我尝试登录Active Admin localhost:3000/admin/login
时,它会将我重定向到 Devise的登录页面。我知道可能有愚蠢的错误,但不知道如何解决这个问题??
应用/配置/初始化/ active_admin.rb
ActiveAdmin.setup do |config| #I have removed comments
config.site_title = "Shopaholic"
config.authentication_method = :authenticate_admin_user!
config.current_user_method = :current_admin_user
config.logout_link_path = :destroy_admin_user_session_path
config.batch_actions = true
end
应用/配置/初始化/ devise.rb
Devise.setup do |config|
config.secret_key = '28c01a5ccf820bb594d2b6421becfa6487df79dad52a57d49cf61f802ea00c7364215f43cdf87463503e658da69e182f8c35d668577f975fea2bdee736a5d20a'
config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'
require 'devise/orm/active_record'
config.authentication_keys = [ :email ]
config.case_insensitive_keys = [ :email ]
config.strip_whitespace_keys = [ :email ]
config.skip_session_storage = [:http_auth]
config.stretches = Rails.env.test? ? 1 : 10
config.remember_for = 2.weeks
config.password_length = 8..128
config.reset_password_within = 6.hours
config.default_scope = :users
config.sign_out_via = :delete
end
的routes.rb
Shopaholic::Application.routes.draw do
root :to => "products#products_list"
#root to: "admin/dashboard#index"
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
devise_for :users
ActiveAdmin.routes(self)
end
如果您需要任何进一步的信息,请告诉我我会更新。请帮我解决这个问题..提前致谢
答案 0 :(得分:5)
中的
config/initializers/active_admin.rb
将以下内容添加到设置块的底部
ActiveAdmin::BaseController.class_eval do
skip_before_filter :authenticate_user!
end
更新:使用Rails 5.0及更高版本,您需要像这样添加它:
config.skip_before_action :authenticate_user!
答案 1 :(得分:2)
我想如果你在application_controller.rb中有这个块,那么它会将你重定向到Devise的登录页面:
def after_sign_in_path_for(resource)
users_path
end
要解决此重定向,请使用此块而不是上面的块:
def after_sign_in_path_for(resource)
if resource.is_a?(AdminUser)
admin_dashboard_path
else
users_path
end
end
如果由于“before_action:authenticate_user!”而仍然存在问题这个在application_controller.rb然后根据@YodaTravis在config / initializers / active_admin.rb底部使用这个块
ActiveAdmin::BaseController.class_eval do
skip_before_filter :authenticate_user!
end
它会对你有用!!
答案 2 :(得分:0)
文件应该在config / initializers中,而不是app / initializers(请参阅:config / initializers / active_admin.rb)。
顺便说一下,我建议在您的设计模型中添加一个管理列,并使用它来验证可以访问active_admin的管理员用户。