繁体   English   中英

使用Devise和Rails Admin对特定路线进行身份验证

[英]Authenticate using Devise and Rails Admin for particular routes

我将Rails Admin和Devise用于管理员和用户模型。 我在用户模型中添加了一个列“ admin”以指示其身份。

config/routes.rb ,我为RailsAdmin:Engine挂载/admin

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

如何在最干净的代码中实现呢?

在您的管理员控制器上:

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

在您的应用程序控制器上:

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

抱歉,没有注意到是Rails管理员,您可以执行以下操作:

# 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM