ActiveAdmin with devise



我有一个使用devise_token_auth进行身份验证的项目。我已经在此之后安装了主动管理员。

当我尝试访问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打开仪表板页面。

我的问题是为什么我没有获得Active 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表。不要忘记适应您的需求。

注意:如果您在与AA和Devise_token_auth合作时遇到ApplicationController的麻烦,请参阅此链接。

最新更新