Django中用户何时变成AnonymousUser?
我想弄清楚请求中的用户(request.user)到底在什么时候变成了匿名用户(AnonymousUser)。我已经在整个身份验证后台找过了,但就是找不到。难道我找错地方了吗?
我知道每个没有经过身份验证的用户都会变成匿名用户,但我需要知道这个过程发生在什么地方和什么时间,因为我正在写一些代码。
如果有人能帮忙,我会非常感激。
3 个回答
0
在"contrib/auth/init.py"文件中的logout方法也会影响到AnonymousUser(),也就是请求中的user。看看下面的代码:
if hasattr(request, 'user'):
from django.contrib.auth.models import AnonymousUser
request.user = AnonymousUser()
4
这一切都在 django.contrib.auth.middleware
模块里 - 你可以在这里查看详细信息: https://github.com/django/django/blob/master/django/contrib/auth/middleware.py#L49。
6
这是一个文件路径,指的是在某个项目中的一个特定文件。具体来说,contrib\auth\__init__.py
是一个 Python 文件,位于名为 "contrib" 的文件夹下的 "auth" 子文件夹里。数字 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