【发布时间】:2018-01-02 11:01:04
【问题描述】:
A 有一堆带有 Admin 命名空间的控制器。我想限制对这些的访问,除非用户是管理员。有没有办法使用 CanCan 来做到这一点而不必调用未经授权的!在每个控制器的每个方法中?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 cancan
A 有一堆带有 Admin 命名空间的控制器。我想限制对这些的访问,除非用户是管理员。有没有办法使用 CanCan 来做到这一点而不必调用未经授权的!在每个控制器的每个方法中?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 cancan
将应用程序控制器添加到您的命名空间并为其添加一个前置过滤器。
class ApplicationController < ActionController::Base
end
class Admin::ApplicationController < ApplicationController
# these goes in your namespace admin folder
before_filter :check_authorized
def check_authorized
redirect_to root_path unless can? :admin, :all
end
end
class SomeadminController < Admin::ApplicationController
def some_action
# do_stuff
end
end
【讨论】:
CanCan 的Admin Namespaces wiki 页面列出了该问题的几种解决方案。
admin,您可能根本不需要为此使用 CanCan
标志。AdminAbility 类(这有点离题,但可以证明是相关的)。【讨论】:
现在 rails_admin 已经完全支持 Cancan 了,你可以在它的官方网站上找到它,有一个关于这个主题的 wiki 页面:
【讨论】: