Django:用户登录authenticate一直校验不通过

基于:Django3.2

发现authenticate一直校验不通过,排查账户名密码没有问题,最后发现创建用户时,单独将is_active设置为了非活跃账户,导致校验不通过。

使用 create_user()函数创建用户,返回的User对象的is_active默认设置为True。

is_active:

布尔值。指定该用户账户是否应该被视为活跃账户。我们建议你把这个标志设置为 False,而不是删除账户;这样,如果你的应用程序对用户有任何外键,外键就不会被破坏。这不一定能控制用户是否能登录。认证后端不一定需要检查 is_active 标志,但默认的后端(ModelBackend)和 RemoteUserBackend 会检查。如果你想允许不活跃的用户登录,你可以使用 AllowAllUsersModelBackend或者 AllowAllUsersRemoteUserBackend。在这种情况下,你还需要自定义 AuthenticationForm 所使用的 LoginView,因为它拒绝非活动用户。需要注意的是, has_perm() 等权限检查方法,以及 Django 管理中的认证方法,都会对非活跃用户返回 False。

解决:

# settings.py
# 让authenticate不关联is_active
AUTHENTICATION_BACKENDS =['django.contrib.auth.backends.AllowAllUsersModelBackend']

你可能感兴趣的:(Django,django,python,后端)