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

使用AbstractUser后Django部署环境Admin表单CSRF验证失败及密码哈希异常

问题解决方案

一、部署后Admin路由重定向+CSRF验证403错误

针对Azure部署的Django应用出现的CSRF 403和重定向问题,按以下步骤排查修复:

  • 添加代理SSL头配置:Azure应用服务通过反向代理转发请求,Django需识别HTTPS请求,在settings.py中添加:
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
  • 开启安全Cookie:生产环境HTTPS下必须设置以下参数,确保CSRF和Session Cookie仅通过HTTPS传输:
    CSRF_COOKIE_SECURE = True
    SESSION_COOKIE_SECURE = True
    
  • 强制HTTPS重定向:设置SECURE_SSL_REDIRECT = True,避免HTTP请求导致的混合内容或重定向异常:
    SECURE_SSL_REDIRECT = True
    
  • 确认CSRF_TRUSTED_ORIGINS覆盖所有可能的域名:如果应用有备用域名(如带www前缀),需一并添加,示例:
    CSRF_TRUSTED_ORIGINS = ['https://rallys.azurewebsites.net', 'https://www.rallys.azurewebsites.net']
    

二、本地Admin面板用户密码未哈希问题

除CLI创建的超级用户外,其他用户密码不哈希,是因为自定义User模型未正确配置Admin管理类导致的,修复方法:

  • 在应用的admin.py中继承UserAdmin并注册自定义User模型,确保Admin表单自动处理密码哈希:
    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin
    from .models import User
    
    class CustomUserAdmin(UserAdmin):
        model = User
        # 自定义添加用户的字段集,包含密码确认字段
        add_fieldsets = (
            (None, {
                'classes': ('wide',),
                'fields': ('username', 'email', 'password1', 'password2', 'is_staff', 'is_superuser'),
            }),
        )
        # 若需自定义编辑用户的字段集,可继续配置fieldsets
    
    admin.site.register(User, CustomUserAdmin)
    
  • 检查自定义User模型的save方法:如果重写了save方法,确保密码字段通过set_password()处理后再保存,示例:
    from django.contrib.auth.models import AbstractUser
    
    class User(AbstractUser):
        # 你的自定义字段
        
        def save(self, *args, **kwargs):
            # 仅当密码未哈希时进行处理
            if self.password and not self.password.startswith(('pbkdf2_sha256$', 'argon2$', 'bcrypt$')):
                self.set_password(self.password)
            super().save(*args, **kwargs)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:45:23