python测试开发django-74.auth认证之is_active
前言
在 django 的 User 表里面有个 is_active 字段可以判断用户是否是激活状态。
使用 authenticate 校验登录的时候 is_active 是不生效的。
authenticate 登录
create_user 创建新用户的时候 is_active 默认是1,也就是True
D:\code202003\MyDjango>python manage.py shell Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django.contrib.auth.models import User >>> from django.contrib.auth import authenticate >>> user=User.objects.create_user(username="test",password="test") >>> user <User: test> >>> user.is_active True
当修改用户的 is_active 状态,改成 False 时
>>> a=authenticate(username="test",password="test") >>> a.is_active=False >>> a.save() >>> a.is_active False
再次用 authenticate 校验登录状态
>>> from django.contrib.auth.models import User >>> from django.contrib.auth import authenticate >>> a=authenticate(username="test",password="test") >>> a
此时账号密码验证不通过,这样就跟输错密码是一样的了,无法知道用户is_active状态
不检测用户的活跃状态
django的默认配置
会检测用户是否是活跃状态(is_active),不活跃则返回None(默认配置)
AUTHENTICATION_BACKENDS = [‘django.contrib.auth.backends.ModelBackend‘]
需在 settings.py 文件里加上下面的配置
# 不会检测用户的活跃状态 AUTHENTICATION_BACKENDS = [‘django.contrib.auth.backends.AllowAllUsersModelBackend‘]
is_active
加上配置后,重新打开shell
D:\code202003\MyDjango>python manage.py shell Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django.contrib.auth.models import User >>> from django.contrib.auth import authenticate >>> a=authenticate(username="test",password="test") >>> a <User: test> >>> a.is_active False
这样 is_active 就会生效了!
相关推荐
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
夜斗不是神 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16
坚持是一种品质 2020-11-16
染血白衣 2020-11-16
huavhuahua 2020-11-20
meylovezn 2020-11-20
逍遥友 2020-11-20
weiiron 2020-11-16