Django self.context[';request';]。用户始终返回AnonymousUser

Django self.context[';request';]。用户始终返回AnonymousUser,django,django-rest-framework,django-authentication,Django,Django Rest Framework,Django Authentication,我正在尝试获取模型序列化程序中的当前用户 self.context['request'].user 但它总是返回匿名用户。 下面是序列化程序代码段 class QuestionBlockDetailSerializer(serializers.ModelSerializer): isvoted = serializers.SerializerMethodField(read_only=True) def get_isvoted(self,obj): user

我正在尝试获取模型序列化程序中的当前用户

self.context['request'].user
但它总是返回匿名用户。 下面是序列化程序代码段

class QuestionBlockDetailSerializer(serializers.ModelSerializer):
    isvoted = serializers.SerializerMethodField(read_only=True)

    def get_isvoted(self,obj):
        user = self.context['request'].user
        print self.context['request'].user
        ...
下面是权限和授权后端的设置

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'social.backends.google.GoogleOAuth2',
'social.backends.facebook.FacebookOAuth2',)

 'DEFAULT_AUTHENTICATION_CLASSES': (
    'oauth2_provider.ext.rest_framework.OAuth2Authentication',
    'rest_framework_social_oauth2.authentication.SocialAuthentication',
    'rest_framework.authentication.TokenAuthentication',

),
视图:


我尝试添加会话和基本身份验证,但它总是返回匿名用户。请在这方面帮助我。

您在
QuestionBlockDetailAPI
视图中使用的是
IsAuthenticatedOrReadOnly
权限类。因此,未经身份验证的用户可以读取您的api。因此,
self.context['request'].user
在未经身份验证的用户访问您的api时是匿名用户

您可以通过更改
def get\u isvoted(self,obj):
方法来解决此问题,如:

def get_isvoted(self,obj):
    if self.context['request'].user.is_authenticated():
        return self.context['request'].user.isvoted
    else:
        return False

仅使用user.u是否在条件下进行了身份验证

if self.context['request'].user.is_authenticated:
    return true

你能展示你的观点吗?我也为认证用户提供匿名服务。我正在使用oAuth进行令牌身份验证。我试过上面的片段。它仍然返回匿名用户
if self.context['request'].user.is_authenticated:
    return true