request.user.is_authenticated为True时,request.user可以为False吗?

时间:2016-10-02 18:41:49

标签: django django-rest-framework django-authentication

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

是否有一个实际且相关的案例,我自己的代码会从上面返回意外或不同的结果?

class IsAuthenticated(BasePermission):
    def has_permission(self, request, view):
        return request.user.is_authenticated

1 个答案:

答案 0 :(得分:0)

如果未定义request.user,则会出错。换句话说,如果未标识用户,则尚未将其添加到请求对象中。

如果您对向后兼容性不感兴趣,我想您可以这样做:

return request.user and request.user.is_authenticated