Django在哪里用户成为AnonymousUser?

时间:2011-08-21 18:40:09

标签: python django authentication

我正在尝试找出确切请求的位置/时间。用户成为AnonymousUser。我一直在搜索整个Auth后端,但我似乎无法找到它。我在找错了地方吗?

我知道每个不是Authenticated用户的用户都会成为AnonymousUser,但我需要知道我正在构建的某些代码在何处/何时发生。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:5)

contrib\auth\__init__.py:80

def get_user(request):
    from django.contrib.auth.models import AnonymousUser
    try:
        user_id = request.session[SESSION_KEY]
        backend_path = request.session[BACKEND_SESSION_KEY]
        backend = load_backend(backend_path)
        user = backend.get_user(user_id) or AnonymousUser()
    except KeyError:
        user = AnonymousUser()
    return user

答案 1 :(得分:4)

全部在django.contrib.auth.middleware模块中 - 请查看此处:https://github.com/django/django/blob/master/django/contrib/auth/middleware.py#L49了解详情。

答案 2 :(得分:0)

“ contrib / auth / init .py”中的登出方法也会影响AnonymousUser()来请求。用户,请看下面的代码:

if hasattr(request, 'user'):
    from django.contrib.auth.models import AnonymousUser
    request.user = AnonymousUser()