栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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']

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/869966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号