如何阻止访问Admin命名空间

时间:2016-02-11 11:39:42

标签: ruby-on-rails ruby ruby-on-rails-4

我正在构建一个Admin命名空间,并且想知道是否有一个解决方案可以阻止访问此命名空间中的所有控制器,仅限登录管理员。

到目前为止,我找到的唯一解决方案是向每个控制器添加以下内容:

before_action :require_admin

def require_admin
  unless current_user.admin?
    redirect_to root_path
  end
end

我正在寻找更全球化的东西。

2 个答案:

答案 0 :(得分:4)

只需使用继承:

  • 创建AdminController
  • 延长ApplicationController
  • 让您的管理控制器扩展AdminController
  • 将过滤器和方法放在AdminController
  • 从具体的管理控制器中删除过滤器和方法。

答案 1 :(得分:0)

您也可以将该代码添加到ApplicationContoller,而不是将其添加到每个控制器,并在不需要管理员权限的控制器中使用skip_before_action :require_admin