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
相关产品推荐
相关产品推荐

