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

已创建超级用户仍出现Django admin 403 Forbidden错误求助

Django Admin 403权限拒绝问题解决(添加用户组时)

问题场景

从GitHub克隆的在线考试系统Django项目,此前运行正常,使用超级用户登录Admin页面后,访问/admin/auth/group/add/时触发403 Forbidden,终端抛出django.core.exceptions.PermissionDenied错误。

排查与解决步骤

1. 检查自定义GroupAdmin权限控制

项目可能对用户组的Admin操作做了自定义限制:

  • 找到项目中的admin.py文件,搜索是否存在对Group模型的自定义Admin类,重点查看has_add_permission方法:
# 示例可能存在的限制代码
from django.contrib.auth.admin import GroupAdmin
from django.contrib.auth.models import Group

class CustomGroupAdmin(GroupAdmin):
    def has_add_permission(self, request):
        # 若此处返回False则会禁止添加操作
        return False

admin.site.unregister(Group)
admin.site.register(Group, CustomGroupAdmin)
  • 若存在此类代码,将return False修改为return True,或者调整权限判断逻辑(比如仅允许超级用户添加):
def has_add_permission(self, request):
    return request.user.is_superuser

2. 验证超级用户权限完整性

超级用户的权限可能被意外修改:

  • 打开Django Shell执行以下命令:
python manage.py shell
from django.contrib.auth.models import User
# 替换为你的超级用户名
user = User.objects.get(username="your_superuser_name")
print("是否为超级用户:", user.is_superuser)
print("是否为 staff:", user.is_staff)
print("是否拥有添加组的权限:", user.has_perm("auth.add_group"))
  • 若is_superuser或is_staff为False,重新创建超级用户:
python manage.py createsuperuser
  • 若has_perm返回False,可手动赋予权限,或直接重新创建超级用户。

3. 排查自定义中间件干扰

项目中的自定义中间件可能拦截了Admin请求:

  • 打开settings.py,找到MIDDLEWARE配置项,临时注释掉所有自定义中间件(保留Django默认中间件),重启服务后测试是否恢复正常。
  • 若恢复,逐个启用自定义中间件,定位到导致问题的中间件后修改其逻辑。

4. 检查Django版本兼容性

项目依赖的Django版本与当前环境版本不匹配可能引发权限逻辑问题:

  • 查看项目根目录的requirements.txt,确认指定的Django版本,安装对应版本:
pip install django==x.x.x  # 替换为项目要求的版本号
  • 重启服务后测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:43:24