我是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