gpt4 book ai didi

ruby-on-rails - Cancan 嵌套资源限制对索引的访问

转载 作者:行者123 更新时间:2023-12-02 02:12:21 24 4
gpt4 key购买 nike

我目前在我的网络应用程序中使用 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

如何限制对另一个用户索引 View 的访问,以便用户 A 无法查看用户 B 的视频?

最佳答案

尝试删除 :through => :current_user 看看是否解决了您的问题。看second code example在 CanCan Wiki 中查看应该如何使用嵌套资源。

CanCan 将通过应用程序中的 current_user 方法获取当前用户。因此,您不必在 authorizing controller actions 时定义它。 .


更新:尝试在您的 Controller 中使用它。

load_and_authorize_resource :skater
load_and_authorize_resource :video, :through => :skater

更新 2: 我无法判断 CanCan 是否因为 Ability Precedence 而失败或者因为当前用户只是未经授权。

根据我目前所见,这就是您的 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

关于ruby-on-rails - Cancan 嵌套资源限制对索引的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com