专栏首页从零开始学自动化测试python测试开发django-74.auth认证之is_active

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 就会生效了!

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python测试开发django-1.开始hello world!

    当你想走上测试开发之路,用python开发出一个web页面的时候,需要找一个支持python语言的web框架。django框架有丰富的文档和学习资料,也是非常成...

    上海-悠悠
  • pytest文档28-重复执行用例(pytest-repeat)

    平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。 自动化运行用例时候,也会出...

    上海-悠悠
  • pytest文档10-命令行传参addoption

    命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行”pytest —html=report.html”,这里面的”—html=report...

    上海-悠悠
  • su root, incorrect password, 密码是正确的

    CentOs系统,在使用su 时提示:incorrect password, 但是密码确实是正确的.

    拓荒者
  • Django-11 分页功能

    修改django_project/blog/views.py,增加分页代码,某个用户所发帖子列表视图类:

    亚乐记
  • Oracle,MySQL迁移整合的问题总结(r10笔记第99天)

    最近负责了一起数据迁移的项目,因为机器硬件过保,因为资源存在冗余,因为。。。总之话还没说完,就得到了项目组的支持,所以迁移的需求是明确的。 那么涉及的服务器数量...

    jeanron100
  • 再看语音交互设计

    赋能是人工智能对人类最重要的事情,而智能语音(例如DuerOS)正在为人机交互的方式赋能。声音一直是人与人沟通的核心,而今也成为了人机交互的核心——智能语音交互...

    半吊子全栈工匠
  • DedeCMS任意用户密码重置漏洞

    综述 2018年01月09日,Dedecms官方更新了DedeCMS V5.7 SP2正式版,后续在10日有网友爆出其存在任意用户密码重置漏洞。...

    xfkxfk
  • 使用PHP应用查询SAP HANA Express Edition里的数据

    前提:64位的PHP runtime和64位的Apache Web server已经安装完毕。

    Jerry Wang
  • 微软又开源了一个机器学习框架,这次是核心产品的机器学习引擎infer.NET

    在开源了跨平台机器学习框架ML.NET之后,微软又开源了一个非常重要的机器学习框架:infer.NET,而且采用的还是MIT许可证。

    量子位

扫码关注云+社区

领取腾讯云代金券