【发布时间】:2014-09-01 07:36:35
【问题描述】:
我正在使用 Django Rest Framework,但我遇到了一些权限问题。我知道如何使用has_permission 和has_object_permission,但在很多情况下,有人需要能够访问retrieve 而不是list——例如,用户可以访问他们自己的个人资料,但是不是他们的完整名单。问题是,has_permission 总是在 has_object_permission 之前调用,所以 has_object_permission 只能更多限制,不能更少。
到目前为止,我能够做到这一点的唯一方法是拥有更多许可权限,然后直接在 ViewSet 中覆盖 list() 并在逻辑中包含权限检查,但我可以将所有这些逻辑实际存储在 Permissions 类中,而不是存储在每个单独的视图集中。
有没有办法做到这一点?现在我觉得我必须编写一个 ViewSet 元类来自动将权限应用于每个视图集方法,这并不是我真正想做的事情。
【问题讨论】:
标签: python django rest permissions django-rest-framework