A 有一堆带有 Admin 命名空间的控制器。我想限制对这些的访问,除非用户是管理员。有没有办法使用 CanCan 来做到这一点而不必调用未经授权的!在每个控制器的每个方法中?
问问题
3271 次
3 回答
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
于 2011-01-19T16:32:40.290 回答
1
CanCan的Admin Namespaces wiki 页面列出了该问题的几个解决方案。
- 正如@mark 建议的那样,为管理员设置一个基本控制器,用于检查每个操作的授权。
admin
如果您只需要检查用户是否有标记,则可能根本不需要为此使用 CanCan 。
- 为了处理彼此不同的管理员(而不是仅与普通用户不同),考虑一个单独的
AdminAbility
类(这有点离题,但可以证明是相关的)。
于 2012-07-31T15:39:31.053 回答
0
现在 rails_admin 已经完全支持 Cancan,你可以在它的官方网站上找到它,有一个关于这个主题的 wiki 页面:
于 2012-03-14T03:39:15.370 回答