【发布时间】:2021-01-08 15:42:34
【问题描述】:
我有一个使用 Django Rest Framework 构建的端点,现在我想向其添加权限,以便只有属于某个组的用户才能访问端点。所以我使用基于令牌的访问并受到this example 的启发,我正在尝试使用以下代码:
class ReadPermission(BasePermission):
def has_permission(self, request, view):
return request.user.groups.filter(name=settings.GROUP_POST_DATA).exists()
class MyEndpoint(mixins.ListModelMixin, viewsets.GenericViewSet):
permission_classes = [IsAuthenticated, ReadPermission]
http_method_names = ['get']
# etc
但不幸的是,我收到了AttributeError: 'User' object has no attribute 'groups'
为什么用户对象没有组?
【问题讨论】:
-
如果是自定义的,你能显示你正在使用的身份验证类吗?可能是附加到请求的用户对象不是正确的
-
可以添加Django和Django REST Framework的版本吗?
-
你的代码片段是正确的;你能显示 MyEndpoint 的注册(在 urls.py 中)吗?我还会在 ReadPermission .has_permission() 中插入一个断点(pdb.set_trace() 可以)并检查“request.user”。是用户吗?然后尝试“dir(request.user)”来显示对象的属性。是否存在“组”?最后:request.user.groups.all()。你能看到一组查询集吗?
标签: python django django-rest-framework permissions authorization