Python 在Django中,用户在哪里变成匿名用户?
我正在尝试找出request.user成为匿名用户的确切位置/时间。我一直在搜索整个Auth后端,但似乎找不到它。我找错地方了吗 我知道每个不是经过身份验证的用户都会变成匿名用户,但我需要知道我正在构建的某些代码在何处/何时发生这种情况Python 在Django中,用户在哪里变成匿名用户?,python,django,authentication,Python,Django,Authentication,我正在尝试找出request.user成为匿名用户的确切位置/时间。我一直在搜索整个Auth后端,但似乎找不到它。我找错地方了吗 我知道每个不是经过身份验证的用户都会变成匿名用户,但我需要知道我正在构建的某些代码在何处/何时发生这种情况 任何帮助都将不胜感激。都在django.contrib.auth.middleware模块中-查看此处:了解详细信息。都在django.contrib.auth.middleware模块中-查看此处:了解详细信息。contrib\auth\\uu init\uu
任何帮助都将不胜感激。都在
django.contrib.auth.middleware模块中-查看此处:了解详细信息。都在django.contrib.auth.middleware模块中-查看此处:了解详细信息。contrib\auth\\uu init\uuuuuuuuuuuuy: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
contrib\auth\\uuuuu 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
“contrib/auth/init.py”中的注销方法也会影响匿名用户()请求。用户,请查看以下代码:
if hasattr(request, 'user'):
from django.contrib.auth.models import AnonymousUser
request.user = AnonymousUser()
“contrib/auth/init.py”中的注销方法也会影响匿名用户()请求。用户,请查看以下代码:
if hasattr(request, 'user'):
from django.contrib.auth.models import AnonymousUser
request.user = AnonymousUser()
尝试将assert False添加到AnonymouUser的构造函数中,看看回溯是怎么说的。尝试将assert False添加到AnonymouUser的构造函数中,看看回溯是怎么说的。在此之前将执行中间件-这只是一个帮助函数,魔法不会在这里发生:)我查看了您的源代码。返回惰性对象。这就是魔法真正发生的地方。好吧,你知道,这个函数不会自己执行。问题是:request.user在何时何地成为匿名用户。至于什么时候,它在中间件中发生。我不认为放弃投票伙伴有什么意义:)@bx2我一直在寻找上面两种答案的结合#1其中user=AnonymousUser(),然后#2最终决定将哪个用户设置为。第86行:user=backend.get\u user(user\u id)或AnonymousUser()
中间件将在此之前执行-这只是一个帮助函数,魔法不会在这里发生:)我查看了您的源代码。返回惰性对象。这就是魔法真正发生的地方。好吧,你知道,这个函数不会自己执行。问题是:request.user在何时何地成为匿名用户。至于什么时候,它在中间件中发生。我不认为放弃投票伙伴有什么意义:)@bx2我一直在寻找上面两种答案的结合#第86行:user=backend.get\u user(user\u id)或AnonymousUser()
您的源调用我的源L16:request.user=SimpleLazyObject(lambda:get\u user(request))
并返回一个调用我的惰性对象。我的设置实际上是匿名用户。律师。为了它的价值,我也想要这个。谢谢你的帮助。@Thomas:哈哈-可以说,他们两个都不是我们的目标-这不是比赛-我只是想帮忙:)干杯!打得好,先生!帽子提示对不起,如果我玩stackunderflow太有竞争力了。它就像终极游戏秀,但没有奖品:(你的源代码调用我的源代码L16:request.user=SimpleLazyObject(lambda:get_user(request))
并返回一个名为My的惰性对象。My实际上设置了匿名用户。Lawyered。我也+1’d这个,这是值得的。谢谢你的帮助。@Thomas:哈哈-可以说他们都不是我们的对象-这不是竞争-我只是想帮助:)干杯!打得好,先生!帽子提示对不起,如果我玩stackunderflow太有竞争力了。这就像终极游戏秀,但没有奖品:(