Django登录AttributeError:' AnonymousUser'对象没有属性' _meta'

时间:2017-01-12 17:58:21

标签: django django-rest-framework jwt

我有这段代码:

 from django.contrib.auth import logout, login, authenticate
 ...
   if User.objects.filter(email=email).exists():
        existing_user = User.objects.get(email=email)

        user = authenticate(username=existing_user.username, password=existing_user.password)

        login(request, user)

根据文档,这应该有用,但它没有,它给了我错误:

  

request.session [SESSION_KEY] = user._meta.pk.value_to_string(user)   AttributeError:' AnonymousUser'对象没有属性' _meta'

因为我正在使用Django Rest Framework进行JWT身份验证,所以可能会出现问题?它只是一个django驱动的API,所以我想这是一个不同的场景,但我不明白可能导致问题的原因。

1 个答案:

答案 0 :(得分:1)

在DRF中,用户应在Authentication类中进行身份验证。 This库为JWT auth提供了一个。它提供令牌生成和验证。

您将在View或ViewSet类中获得self.request.user用户。您只需要允许JWT auth:

class ExampleView(APIView):
    authentication_classes = (BasicAuthentication, JSONWebTokenAuthentication)

或者更好的设置与记录hereDEFAULT_AUTHENTICATION_CLASSES一样。