首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护子对象的Laravel策略

保护子对象的Laravel策略
EN

Stack Overflow用户
提问于 2019-05-13 21:18:52
回答 1查看 27关注 0票数 0

我有一个关于Laravel政策的快速问题。我正在编写一个非常简单的API。我有一个带有一些GET端点的Podcast对象:

代码语言:javascript
复制
GET /api/podcasts => returns all podcasts
GET /api/podcasts/{podcast} => returns a given podcast

我正在使用绑定到播客模型的策略。我在PodcastController类的构造函数中使用了$this->authorizeResource(Podcast::class);。这很好用,我只能访问我自己的播客!

现在,我有一些子对象,例如文件。所以我创建了一个新的端点:

代码语言:javascript
复制
GET /api/podcasts/{podcast}/files/{file} => returns a specific file of a podcast

我已经在FileController类的构造函数中添加了$this->authorizeResource(Podcast::class);。这样做,我不能在URL中输入任何播客ID,只能输入我自己的ID,这很好。但是,我可以在URL中输入任何文件ID,包括不属于我的播客的文件。例如:

代码语言:javascript
复制
GET /api/podcasts/1/files/3

播客#1是我的,这很好,但是文件#3属于播客#2 (不是#1),它不是我的。在这一点上我应该得到一个未经授权的访问。

有什么想法吗?谢谢

Axel

EN

回答 1

Stack Overflow用户

发布于 2019-05-13 22:43:34

我实际上找到了解决方案的开始,但我发现它很脏。我写了一个显式的模型绑定条件:

代码语言:javascript
复制
        Route::bind('file', function($value, $router) {
            return File::where('podcast_id', $router->parameter('podcast'))->findOrFail($value);
        });

你们觉得怎么样?谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56113240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档