有设计的 ActiveAdmin

ActiveAdmin with devise

我有一个项目使用 devise_token_auth for authentication. I have installed Active Admin following this

当我尝试访问 localhost:3000/admin 时,我得到 You need to sign in or sign up before continuing.

但是,当我在 config/initializers/active_admin.rb 中评论 config.authentication_method = :authenticate_admin_user! 时,localhost:3000/admin 打开仪表板页面。

我的问题是为什么我没有获得活动管理员的登录页面?

在使用 ActiveAdmin (AA) 和 devise_token_auth 时,您需要了解几件事。 AA 使用:

  • Devise 用于身份验证
  • :admin 作为默认命名空间

这意味着您所有的 AA 资源都会有 /admin 下的路由,例如/admin/posts 他们将使用 Devise 进行身份验证;不是 devise_token_auth.

为了利用这两种类型的身份验证系统,您必须使用两个命名空间:一个用于 AA,一个用于 devise_token_auth。

这种情况下的常见策略是在 devise_token_auth 之前定义 AA 路线,如下所示:

Rails.application.routes.draw do

  # AA routes available at /admin
  devise_for :admin_users, ActiveAdmin::Devise.config
  ActiveAdmin.routes(self)

  # token auth routes available at /api/v1/auth
  namespace :api do
    scope :v1 do
      mount_devise_token_auth_for 'User', at: 'auth'
    end
  end

end

此处AA使用:admin_users,token_auth将使用:users table。不要忘记根据您的需要调整它们。

注意:如果您在使用 AA 和 devise_token_auth 时遇到 ApplicationController 问题,请 refer to this link.