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

Django:继承AbstractUser时添加登录额外校验条件

自定义登录认证条件的实现方法

要在保留Employee继承AbstractUser的前提下,把登录条件改成is_active==True且is_deleted==False,你需要自定义认证后端,重写用户认证的判断逻辑,具体步骤如下:

1. 编写自定义认证后端

在你的Django项目对应应用(比如core)下创建backends.py文件,写入以下代码:

from django.contrib.auth.backends import ModelBackend
from django.contrib.auth import get_user_model

UserModel = get_user_model()

class CustomAuthBackend(ModelBackend):
    def user_can_authenticate(self, user):
        # 重写父类方法,同时校验is_active和is_deleted状态
        return user.is_active and not user.is_deleted

2. 在settings.py中配置自定义认证后端

找到或新增AUTHENTICATION_BACKENDS配置项,添加你的自定义后端路径:

AUTHENTICATION_BACKENDS = [
    'core.backends.CustomAuthBackend',  # 替换为你实际的文件路径
    # 若需保留其他认证逻辑(如admin默认后端),可继续追加
]

额外注意

你当前settings.py里的AUTH_USER_MODEL = 'core.Person'疑似笔误,应该与你的Employee模型对应,正确配置应为AUTH_USER_MODEL = 'core.Employee',否则Django将无法识别正确的用户模型。

内容的提问来源于stack exchange,提问作者Adrian Gil Moral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:11:11