![](/img/trans.png)
[英]request.user on AbstractUser gives AnonymousUser TypeError
[英]Allauth request.user is AnonymousUser in APIView, but is_authenticated in View
我进行了这个测试:
class IsAuthenticatedView(APIView):
def get(self, request):
print(request.user)
return Response({
"is_authenticated": "true" if request.user.is_authenticated else "false"
}, 200)
和
class IsAuthenticatedView(View):
def get(self, request):
print(request.user)
return Response({
"is_authenticated": "true" if request.user.is_authenticated else "false"
}, 200)
由于 AssertionError,第二个无法正确加载。 但是, request.user 在这两者之间发生变化,其中 APIView 打印 AnonymousUser,第二个打印实际登录的用户。
我正在使用 Facebook 登录身份验证。
将答案放在这里,因为它看起来像评论一样混乱:
您是否在设置中设置了DEFAULT_AUTHENTICATION_CLASSES
? 你可能想要这个:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
)
}
取自这里
您可以直接尝试 request.user.is_authenticated 。 为什么要在api视图和视图中尝试? 请解释。
编辑:好的。 实际上你必须首先使用 request.user.is_authenticated 然后才使用 request.user 是的,没有必要在 is_authenticated bcoz 中添加 () 它在 django 1.11 中不再是一个函数。 它是一个属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.