2011-08-21 72 views
1

我试图找出何时/何时确切request.user成为AnonymousUser。我一直在搜索整个Auth后端,但我似乎无法找到它。我看错了地方?在Django中,用户成为AnonymousUser的地方在哪里?

我知道,每个不是Authenticated用户的用户都会成为AnonymousUser,但我需要知道这种情况在何处发生。

任何帮助,将不胜感激。

+0

尝试加入假的构造函数AnonymouUser看到回溯说什么断言。 –

回答

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 
+0

中间件将在此之前执行 - 这只是一个帮手功能,魔术在这里没有发生:) – bx2

+0

我看着你的来源。返回懒惰的对象。这是实际发生魔法的地方。 – Thomas

+1

好吧 - 这个函数不会被你自己知道的自己执行。问题是:*何时/何时*完全request.user成为AnonymousUser。至于什么时候 - 它发生在中间件中。没有看到给予赞成票配合:) – bx2

4

这一切都在django.contrib.auth.middleware模块 - 看这里:https://github.com/django/django/blob/master/django/contrib/auth/middleware.py#L49了解详情。

+0

你的源代码调用我的源代码L16:'request.user = SimpleLazyObject(lambda:get_user(request))'并返回一个懒惰的对象,它会调用我的。我实际上设置了匿名用户。 Lawyered。 – Thomas

+0

我也是这样,因为它值得。谢谢您的帮助。 – Chris

+1

@Thomas:哈哈 - 他们两个都不是我们的对象可以这么说 - 这不是比赛 - 我只是想帮助:)干杯! – bx2

相关问题