2011-08-21 42 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

相關問題