【问题标题】:Django REST Framework: preventing access to objects you don't ownDjango REST Framework:防止访问您不拥有的对象
【发布时间】:2014-06-26 13:25:14
【问题描述】:

我有一个 ModelViewSetModelSerializer FooViewSet 中的get_queryset 方法按用户过滤结果(即,当用户从foo/GET 时,用户只能看到他们拥有的Foo 对象)。我试图了解 DRF 如何阻止用户访问您不希望他们访问的对象或通过他们的 ID 修改特定对象(如foo/123/)。

foo/123/ 的情况下,我注意到get_queryset 也被GET 调用。那么在检索单个对象之前,结果是否首先由get_queryset 剔除?我没有假设,而是为我的 api 中的每个对象定义了自定义权限并覆盖了has_object_permission,假设这是防止用户无权访问和操作对象的方法。但是我可以仅依靠get_queryset 中的过滤来确保这一点吗?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    Tl;DR:是的。

    get_object 将在 get_queryset 返回的 QuerySet 上调用 get_object_or_404 — 所以你很好。

    【讨论】:

    • 谢谢!这是在文档中提到的还是通过检查源发现的?
    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 2018-04-27
    • 2014-09-13
    • 2015-10-15
    • 2019-04-30
    • 2017-03-04
    • 2019-09-30
    • 2016-06-30
    相关资源
    最近更新 更多