簡體   English   中英

如何在rails_admin中使用魔法寶石

[英]How to use sorcery gem with rails_admin

我想使用sorcery寶石來保護rails_admin頁面。 根據此SO答案 ,執行此操作的方法如下:

# config/initializers/rails_admin.rb
RailsAdmin.config do |config|
  config.authenticate_with do
    # Use sorcery's before filter to auth users
    require_login
  end
end

# app/controllers/application_controller.rb
class ApplicationController
  # Overwrite the method sorcery calls when it
  # detects a non-authenticated request.
  def not_authenticated
    # Make sure that we reference the route from the main app.
    redirect_to main_app.login_path
  end
end

這將覆蓋巫術的默認方法,即不處理任何登錄。 覆蓋確實可以在我的應用程序中工作,但是當我訪問rails_admin頁面時,出現以下錯誤:

 undefined local variable or method `root_path' for #<RailsAdmin::MainController. 

因此,該替代在rails_admin代碼中不起作用。 我在我的路線文件的底部安裝rails_admin

# config/routes.rb
...
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'

我該如何解決?

這是因為rails_admin控制器未從我的應用程序控制器繼承。 有一個rails_admin配置設置可設置此繼承,即

#config/initializers/rails_admin.rb
RailsAdmin.config do |config|
  ...
  config.parent_controller = 'ApplicationController'
end

暫無
暫無

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

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