我有一个使用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
的麻烦,请参阅此链接。