Django Rest Framework

时间:2016-08-23 20:46:58

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

问题

我正在使用Django REST框架 - 到目前为止,我一直在使用DjangoObjectPermissions权限类。我使用django-rules来确定哪些用户拥有对象的权限。

但是,此权限类似乎拒绝匿名用户的读取权限。

我需要找到允许对所有用户进行只读访问的最佳方式(已验证或未验证)。对于添加,修改和删除 - 应该正常应用对象权限。

解决此问题的最佳方法是什么? Django默认情况下似乎不提供can_view权限。

这可能涉及为每个模型手动添加can_view权限。或者也许最好以某种方式实现DjangoObjectPermissionsOrAnonReadOnly权限类?

2 个答案:

答案 0 :(得分:3)

修复实际上非常简单。可以创建扩展DjangoObjectPermissions的自定义权限类,并覆盖authenticated_users_only变量。

class DjangoObjectPermissionsOrAnonReadOnly(DjangoObjectPermissions):
    authenticated_users_only = False

答案 1 :(得分:1)

from rest_framework import permissions

然后给予

 permission_classes = [permissions.IsAuthenticatedOrReadOnly, YourPermissionshere, ]
在您的视图中

。那将完成这项工作。 如果未经过身份验证,匿名用户将获得只读权限

您可以控制何时检查权限,而不是通过处理函数来检查

self.check_object_permissions(self.request, obj)