【问题标题】:Django Rest Framework--deny access to list but not to retrieveDjango Rest Framework--拒绝访问列表但不检索
【发布时间】:2014-09-01 07:36:35
【问题描述】:

我正在使用 Django Rest Framework,但我遇到了一些权限问题。我知道如何使用has_permissionhas_object_permission,但在很多情况下,有人需要能够访问retrieve 而不是list——例如,用户可以访问他们自己的个人资料,但是不是他们的完整名单。问题是,has_permission 总是在 has_object_permission 之前调用,所以 has_object_permission 只能更多限制,不能更少。

到目前为止,我能够做到这一点的唯一方法是拥有更多许可权限,然后直接在 ViewSet 中覆盖 list() 并在逻辑中包含权限检查,但我可以将所有这些逻辑实际存储在 Permissions 类中,而不是存储在每个单独的视图集中。

有没有办法做到这一点?现在我觉得我必须编写一个 ViewSet 元类来自动将权限应用于每个视图集方法,这并不是我真正想做的事情。

【问题讨论】:

    标签: python django rest permissions django-rest-framework


    【解决方案1】:

    has_permission 的参数之一是view,它有一个属性.action,它是五个“LCRUD”操作之一(“list”/“create”/“retrieve”/“update” /“破坏”)。所以我认为您可以使用它来检查 has_permission 中正在执行的操作是列表还是检索,并相应地拒绝或允许它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      相关资源
      最近更新 更多