我进行了这项测试:
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登录验证。
答案 0 :(得分:1)
在这里给出答案,因为它看起来很混乱:
您是否在设置中设置了DEFAULT_AUTHENTICATION_CLASSES
?你可能想要这个:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
)
}
取自here
答案 1 :(得分:0)
您可以按原样尝试request.user.is_authenticated。为什么要在api视图中查看并查看?请解释一下。
编辑: 好的。实际上,您必须首先使用request.user.is_authenticated,然后才使用request.user 是的,没有必要在is_authenticated bcoz中添加()它在django 1.11中不再是一个函数。这是一个属性。