簡體   English   中英

Cancan嵌套限制訪問索引的資源

[英]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

你應該檢查這個問題,這和你一樣。

Cancan nested_routes限制對:index的訪問

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM