簡體   English   中英

為 Active Admin 和 devise_token_auth 擴展 Rails 應用程序控制器

[英]Extending Rails Application Controllers for Active Admin and devise_token_auth

我正在嘗試在我的 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 上看到的所有關於這個的答案中,似乎假設我知道如何做到這一點。

任何人都可以幫忙嗎?

編輯:

重申這個問題,因為我認為我第一次沒有說清楚。 現在,即使我也創建了 ApiController,Active Admin 和 devise_token_auth 都在使用 ApplicationController。 如何讓 devise_token_auth 使用 ApiController?

您絕對可以使用單獨的命名空間,這將使您的代碼更清晰、更有條理。 然而,這不是強制性的。 您需要做的就是在 API 的控制器中,擴展您的ApiController而不是ActionController::Base

例如,這是一個基本的 API 控制器,

class Api::V1::BaseController < ActionController::API
  include DeviseTokenAuth::Concerns::SetUserByToken
  include Pundit
end

以及擴展它並使用 devise_token_auth 作為結果的示例控制器。

class Api::V1::SampleController < Api::V1::BaseController
  def index
    render json: { success: true, email: current_user.email }, status: :ok
  end
end

這是一個示例項目,它具有單獨的 Web 和 API 控制器https://github.com/anujmiddha/rails-api-web-sample

您可以參考 github 上 devise_token_auth 的自述文件中的devise_token_auth 演示示例

您的案例和演示應用程序之間的主要區別在於您將使用ApiController而不是ApplicationController 此外,您必須將devise_token_auth屬性添加到相應的模型中,(例如,如果您想對用戶使用devise_token_auth ,則必須將這些屬性添加到users表中,並將before_action: authenticate_user!UsersController 。)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM