我是RoR的新手,正在使用CanCan进行授权。我想知道如果我必须明确用户可能拥有的每一种能力。CanCan权限 - 他们必须明确吗?
我可能不够清楚,所以我会发布一些代码来帮助说明我的问题。
if user.is_admin?
can :manage, all
end
if user.is_director?
can :update, Camp
end
在这种情况下,导演是否只能更新一个阵营?或者我必须指出他/她明确无法做到的事情?
在此先感谢。
我是RoR的新手,正在使用CanCan进行授权。我想知道如果我必须明确用户可能拥有的每一种能力。CanCan权限 - 他们必须明确吗?
我可能不够清楚,所以我会发布一些代码来帮助说明我的问题。
if user.is_admin?
can :manage, all
end
if user.is_director?
can :update, Camp
end
在这种情况下,导演是否只能更新一个阵营?或者我必须指出他/她明确无法做到的事情?
在此先感谢。
如果我没记错的话,你实现CanCan的时候你必须明确,只要你在匹配的控制器中调用authorize_resource
(或load_and_authorize_resource
)即可。
所以是的(如果您拨打CampController
中的授权方法之一)。
(此外,导演角色不应该与管理员角色重叠;)如果这样做,它只是获得所有权限。而且是不是:all
?)
如果添加check_authorization
你ApplicationController
,那么,它会默认被锁定了所有的控制器动作,除非skip_authorization_check
明确覆盖。
请参阅此GitHub围绕此问题的讨论。
是的它是:所有。我仍然习惯于语法;)感谢您的帮助,但我通过在控制器和视图层中控制访问权限来排序所有内容。 – Ryan