[英]Cancan nested resources restricting access to index
我目前正在我的網絡應用程序中使用cancan,到目前為止它工作得很好但是我遇到了有關rails中嵌套資源的問題。 訪問索引頁面時,cancan不會限制用戶查看其他登錄用戶可以看到的內容。 它適用於顯示頁面,但訪問索引頁時它不起作用。
的routes.rb
resources :skater do
resources :videos
end
ability.rb
can :manage, Video, :skater => { :user_id => user.id }
video_controller.rb
load_and_authorize_resource :skater
load_and_authorize_resource :video, :through => :current_user
如何限制對其他用戶索引視圖的訪問,以便用戶A無法查看用戶B視頻?
嘗試刪除:through => :current_user
以查看是否解決了問題。 查看CanCan Wiki中的第二個代碼示例 ,了解如何使用嵌套資源。
CanCan將通過應用程序中的current_user
方法獲取當前用戶。 因此,在授權控制器操作時不必定義它。
更新:嘗試在您的控制器中使用它。
load_and_authorize_resource :skater
load_and_authorize_resource :video, :through => :skater
更新2:我無法判斷CanCan是否由於能力優先而失敗,或者因為當前用戶是未經授權的。
基於我到目前為止看到的,這是你的ability.rb
文件應該如何看。 第二行將覆蓋第一行,允許您限制可以查看和更改的數量。 我決定使用:manage
因為它“涵蓋所有基礎”,包括所有權限。
cannot :manage, Video # this will include :read, :show, :edit, :update, and :delete
can :manage, Video, :skater => { :user_id => user.id }
我擔心的是你沒有正確過濾滑冰者。 如果您有任何問題,我建議您嘗試這樣做。
can :manage, Video, :user_id => user.id
你應該檢查這個問題,這和你一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.