我正在尝试在我的rails API后端实现devise_token_auth和Active Admin。
devise_token_auth FAQ中有非常清晰的说明,解释了如何一起实现这两个-它需要两个不同的应用程序控制器类。
# app/controllers/api_controller.rb
# API routes extend from this controller
class ApiController < ActionController::Base
include DeviseTokenAuth::Concerns::SetUserByToken
end
# app/controllers/application_controller.rb
# leave this for ActiveAdmin, and any other non-api routes
class ApplicationController < ActionController::Base
end
我的应用中有这两个控制器,但我不知道如何从它们继承Active Admin和devise_token_auth的控制器。
我肯定我错过了一些基本的东西,因为在StackOverflow上看到的所有答案中,似乎都假设我知道如何做到这一点。
有人能帮忙吗?
编辑:
再次重申这个问题,因为我想我第一次说的不清楚。现在,Active Admin和devise_token_auth都在使用ApplicationController,尽管我也创建了ApiController。如何让devise_token_auth使用ApiController?
2条答案
按热度按时间rpppsulh1#
你当然可以使用一个单独的命名空间,这将使你的代码更干净,更有组织。然而,这不是强制性的。您需要做的就是在API的控制器中扩展您的
ApiController
而不是ActionController::Base
。例如,这里有一个基本的API控制器,
以及扩展它并使用devise_token_auth作为结果的样本控制器。
下面是一个示例项目,它具有单独的Web和API控制器https://github.com/anujmiddha/rails-api-web-sample
x33g5p2x2#
你可以在github上的devise_token_auth的自述中参考devise_token_auth demo example。
您的案例和演示应用程序之间的主要区别是您将使用
ApiController
而不是ApplicationController
。此外,您还必须将devise_token_auth
属性添加到相应的模型中(例如,如果您希望对用户使用devise_token_auth
,则必须将属性添加到users
表中,并将before_action: authenticate_user!
添加到UsersController
中)。