Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Desive和Rails管理员对特定路由进行身份验证_Ruby On Rails_Devise_Rails Admin - Fatal编程技术网

Ruby on rails 使用Desive和Rails管理员对特定路由进行身份验证

Ruby on rails 使用Desive和Rails管理员对特定路由进行身份验证,ruby-on-rails,devise,rails-admin,Ruby On Rails,Devise,Rails Admin,我使用Rails管理并设计管理和用户模型。我在用户模型中添加了一列“admin”,以指示其身份 在config/routes.rb中,我为RailsAdmin:Engine 我只允许当前用户.admin用户访问/admin,否则,将用户重定向到主页 如何在最干净的代码中实现这一点?在您的管理控制器上: class MyAdminController < ApplicationController before_filter :authenticate_user! before_fi

我使用Rails管理并设计管理和用户模型。我在用户模型中添加了一列“admin”,以指示其身份

config/routes.rb
中,我为
RailsAdmin:Engine

我只允许
当前用户.admin
用户访问
/admin
,否则,将用户重定向到主页


如何在最干净的代码中实现这一点?

在您的管理控制器上:

class MyAdminController < ApplicationController
  before_filter :authenticate_user!
  before_filter :require_admin
end

非常感谢你。但是如何覆盖默认的Rails\u管理引擎?没有我可以子类化的admincontroller。根据重定向应该是重定向到主应用程序根路径
class ApplicationController < ActionController::Base


  def require_admin
    unless current_user && current_user.role == 'admin'
      flash[:error] = "You are not an admin"
      redirect_to root_path
    end        
  end
end
# in config/initializer/rails_admin.rb

RailsAdmin.config do |config|
  config.authorize_with do |controller|
    unless current_user.try(:admin?)
      flash[:error] = "You are not an admin"
      redirect_to main_app.root_path
    end
  end
end