通过令牌认证获取Django“ self.request.user”

问题描述

我有一个Django Rest / Vue.js应用程序。我使用的是基本的Django身份验证,但是由于它是单页应用程序,因此我切换到了令牌身份验证,以便可以通过端点管理登录/注销/注册并获得更一致的应用程序。

总体运行良好,但是我的主要问题是我获得了一些权限并覆盖了一些视图集。我必须禁用它们才能使我的应用程序可以使用令牌身份验证:

我的权限:

from rest_framework import permissions

    class IsOwnReviewOrReadOnly(permissions.BasePermission):
    
        def has_object_permission(self,request,view,obj):
            if request.method in permissions.SAFE_METHODS:
                return True
    
            return obj.restaurant_review.review_author == request.user
    
    class IsAuthorOrReadOnly(permissions.BasePermission):
    
        def has_object_permission(self,obj):
            if request.method in permissions.SAFE_METHODS:
                return True
    
            return obj.review_author == request.user

我的观点:

class RestaurantReviewViewset(viewsets.ModelViewSet):
    queryset = models.RestaurantReview.objects.all().order_by("-created_at")
    def get_serializer_class(self):
        if self.request.method == 'GET':
            return serializers.RestaurantReviewGETSerializer 
        else:
            return serializers.RestaurantReviewSerializer 

    permission_classes = [IsAuthenticatedOrReadOnly,IsAuthorOrReadOnly]

    def perform_create(self,serializer):
        serializer.save(review_author=self.request.user)

所以我的猜测是Django无法找到request.user,这与我的新身份验证有关吗?令牌认证可以提供吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)