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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值