You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django用户认证失效求助:认证后仍显示AnonymousUser

Django认证后首页仍显示AnonymousUser的解决方案

嗨,我看你遇到的问题是已经完成了用户认证,但重定向到首页后request.user还是AnonymousUser——这是因为你只做了用户验证,却没有完成会话登录的关键步骤。

问题根源

Django的authenticate()函数仅负责验证用户名和密码是否匹配,返回有效的用户对象,但它不会自动把用户绑定到当前请求的会话中。要让用户在后续请求中保持登录状态,必须调用login()函数完成会话绑定操作。

修改后的代码

把你的sign_user视图修改成这样:

from django.contrib.auth import authenticate, login  # 别忘了导入login函数
from django.shortcuts import redirect

def sign_user(request):
    username = request.POST['login']
    password = request.POST['pwd']
    user = authenticate(username=username, password=password)
    if user is not None:
        print('success:' + username + " " + password)
        # 核心步骤:将用户登录到当前会话
        login(request, user)
        return redirect('/')

为什么这样有效?

login(request, user)会完成以下关键操作:

  • 在用户浏览器中设置会话Cookie
  • 将用户ID存储到Django的会话系统中
  • 让后续请求(比如首页的index视图)能通过request.user获取到已登录的用户对象

修改后,你的index视图里的print(user)就会输出正确的用户对象,而不再是AnonymousUser了。

另外可以确认下项目配置里是否启用了django.contrib.auth.middleware.AuthenticationMiddleware中间件,它负责在每个请求中将会话里的用户信息绑定到request.user上,默认Django项目已经配置好,但如果之前改动过settings.py,可以检查下MIDDLEWARE列表确保该中间件存在。

内容的提问来源于stack exchange,提问作者user2950593

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:48:45