我有许多带有“Admin”命名空间的控制器。我想限制对这些控制器的访问,除非用户是管理员。是否可以使用CanCan来实现这一点,而无需在每个控制器的每个方法中调用unauthorized! ?
我有许多带有“Admin”命名空间的控制器。我想限制对这些控制器的访问,除非用户是管理员。是否可以使用CanCan来实现这一点,而无需在每个控制器的每个方法中调用unauthorized! ?
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
Admin Namespaces维基页面列出了解决此问题的几个方案。
admin
标志,则可能根本不需要使用CanCan。AdminAbility
类(这有点离题,但可能会证明相关)。现在rails_admin已经完全支持Cancan,您可以在其官方网站上找到它,有一个专门的wiki页面介绍这个主题: