问题
我正在使用Django REST框架 - 到目前为止,我一直在使用DjangoObjectPermissions
权限类。我使用django-rules
来确定哪些用户拥有对象的权限。
但是,此权限类似乎拒绝匿名用户的读取权限。
我需要找到允许对所有用户进行只读访问的最佳方式(已验证或未验证)。对于添加,修改和删除 - 应该正常应用对象权限。
解决此问题的最佳方法是什么? Django默认情况下似乎不提供can_view
权限。
这可能涉及为每个模型手动添加can_view
权限。或者也许最好以某种方式实现DjangoObjectPermissionsOrAnonReadOnly
权限类?
答案 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)