request.user 可以为 False 而 request.user.is_authenticated 可以为 True 吗?
Can request.user be False while request.user.is_authenticated is True?
Django Rest Framework 的一个片段:
class IsAuthenticated(BasePermission):
def has_permission(self, request, view):
return request.user and is_authenticated(request.user)
def is_authenticated(user):
if django.VERSION < (1, 10):
return user.is_authenticated()
return user.is_authenticated
是否存在我自己的代码会 return 出乎意料或与上述结果不同的实际相关案例?
class IsAuthenticated(BasePermission):
def has_permission(self, request, view):
return request.user.is_authenticated
如果未定义 request.user,您的将出错。换句话说,如果用户未被识别,那么还没有被添加到请求对象中。
如果您对向后兼容性不感兴趣,我想您可以这样做:
return request.user and request.user.is_authenticated
Django Rest Framework 的一个片段:
class IsAuthenticated(BasePermission):
def has_permission(self, request, view):
return request.user and is_authenticated(request.user)
def is_authenticated(user):
if django.VERSION < (1, 10):
return user.is_authenticated()
return user.is_authenticated
是否存在我自己的代码会 return 出乎意料或与上述结果不同的实际相关案例?
class IsAuthenticated(BasePermission):
def has_permission(self, request, view):
return request.user.is_authenticated
如果未定义 request.user,您的将出错。换句话说,如果用户未被识别,那么还没有被添加到请求对象中。
如果您对向后兼容性不感兴趣,我想您可以这样做:
return request.user and request.user.is_authenticated