我有以下 ModelViewSet

class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer
    authentication_classes = (TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated, MyUserPermissions)

我希望 create method (POST on /users/) 不要求任何身份验证。在这种情况下如何覆盖 authentication_classes ?我说的是 ModelViewSet 不是通用的 API View 。

最佳答案



其实这不是你想要的。您希望用户的 POST 不需要任何权限,这将导致经过身份验证或未经身份验证的请求都会成功。

我建议覆盖您的权限类,以便它们始终允许 POST 请求。关注 custom permissions documentation 以获取更多信息。

基本上你会有类似的东西:

class IsAuthenticatedOrCreate(permissions.IsAuthenticated):
    def has_permission(self, request, view):
        if request.method == 'POST':
            return True
        return super(IsAuthenticatedOrCreate, self).has_permission(request, view)

并且您的其他权限类也可能类似。

关于django - 在 Django REST framework 中对 ModelViewSet 中的不同操作使用不同的身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22196697/

10-12 18:32