A有一堆带有Admin命名空间的控制器。我想限制访问这些,除非用户是管理员。有没有办法使用CanCan做到这一点,而不必打电话给未经授权!在每个控制器的每种方法中?
答案 0 :(得分:8)
将一个应用程序控制器添加到您的命名空间,并在之前过滤它。
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
答案 1 :(得分:1)
CanCan的Admin Namespaces维基页面列出了此问题的几种解决方案。
admin
,您可能根本不需要使用CanCan
标志。AdminAbility
类(这有点偏离主题,但可能证明是相关的)。答案 2 :(得分:0)
现在rails_admin完全支持Cancan,你可以在官方网站上找到它,这个主题有一个wiki页面: