一、前言

对于一个系统来讲,用户模块是非常基本且重要的。搭建的测试平台也需要对用户、用户权限等进行管理。下面为你讲解如何通过DRF来快速的做一个用户登录的验证接口。


完整教程地址:《从0搭建自动化测试平台》

项目在线演示地址:http://121.43.43.59/ (帐号:admin 密码:123456)


文章目录

  • 一、前言
  • 二、验证登录讲解
    • 1)创建用户
    • 2)开发登录接口
  • 三、总结

二、验证登录讲解

1)创建用户

进入django的项目目录,执行下面的命令进行用户的创建:

python manage.py createsuperuser --email admin@example.com --username admin

按照提示一步一步设置用户的密码和其他信息即可:


用户创建成功后,会在数据库的auth_user表中看到该用户的记录:


2)开发登录接口

1)django项目目录结构创建

在django项目根目录下执行如下命令,创建一个用户相关的app:

django-admin startapp user


2)注册app到配置项中

user加入settings.py中的INSTALLED_APP列表中,完整的INSTALLED_APP内容如下:

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','user','rest_framework','rest_framework.authtoken'
]

3)定义接口说明

对于我们这个登录接口而言,需要用户传递两个参数:用户名、密码 ,接口路径和传参要求如下:


接口地址:/user/login

请求方法: POST

传参要求:

{"user_name":"admin","password":"123456"  #这里是你创建用户时设置的密码
}

4)开发接口

接口说明给出后,我们就可以开发对应的接口了,在views.py 文件中输入如下代码:

from django.contrib.auth import authenticate
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.authtoken.models import Token@api_view(['POST'])  # 列表中的元素代表支持哪些请求方法
def login(request):"""登录接口"""# 验证用户帐号密码的内置方法user = authenticate(username=request.data['username'], password=request.data['password'])if user:Token.objects.filter(user_id=user.id).delete()  # 删除原来的tokentoken = Token.objects.create(user=user)  # 创建新的tokenreturn Response(data={'msg': '登录成功!', 'token': token.key})  # 返回登录信息及tokenreturn Response(data={'msg': '用户名或错误!'}, status=status.HTTP_401_UNAUTHORIZED)

5)指定路由url

1.在user文件夹新增文件urls.py,并增加如下代码:

from django.urls import path
from user.views import loginapp_name = "accounts"urlpatterns = [path('login', login),  # 代表请求接口路径
]

6)主入口配置路由前缀

1.在QNtest下的urls.py文件中:


增加如下代码:

from django.contrib import admin
from django.urls import path
from django.urls import includeurlpatterns = [path('admin/', admin.site.urls),path('user/', include('user.urls', namespace='user')),
]

目的是将user app的路由注册到这里,并增加接口地址前缀user/


7)验证效果

启动项目后,通过postman (postman传参格式记得选json) 或者jmeter携带接口参数(这里以jmeter举例)进行请求 (帐号密码用你创建时输入的)



请求结果



至此我们已经完成了一个用户登录验证的接口了。


三、总结

在我们实际的应用场景中,用户登录成功后还需要去查询用户的一些信息(姓名、性别、邮箱、角色、用户名、地址等),上面代码实现的token验证和登录都是基于mysql数据库的,查询用户信息的话也是走mysql库中进行获取,每次涉及权限校验和验证的接口就都需要查一次库,这样请求量大了后会对数据库增加不少的压力,我们可以通过redis来做登录的信息验证并将用户信息存入到redis中,来提高性能。

关于如何进行redis认证可以参考教程《【DRF】django restframework如何使用redis来做token认证》 进行学习。


自动化测试平台(二):开发用户认证接口相关推荐

  1. 禅道PMS兼容redmine用户认证接口

    项目地址:https://github.com/web3d/zentao-redmine-userauth zentao-redmine-userauth 做了一个基本的用户认证接口,兼容redmin ...

  2. 在MapInfo平台上开发用户定制的应用程序的编程语言 MapBasic v6.0 1CD

    在MapInfo平台上开发用户定制的应用程序的编程语言 MapBasic v6.0 1CD IDRISI.Andes.v15.00-ISO 1CD(地理信息系统(GIS)及图象处理软件) IDRISI ...

  3. 尚医通 (十九)用户认证

    目录 一.对象存储OSS 1.开通"对象存储OSS"服务 2.创建Bucket 3.上传默认头像 4.创建RAM用户 5.使用SDK 二.后端集成OSS 1.新建云存储微服务 2. ...

  4. 浙里办开发票据认证单点登陆、令牌获取用户信息

    浙里办开发票据认证单点登陆.令牌获取用户信息(JAVA后端处理)   最近在搞浙里办开发,周边的人里都没人接触过,以至于自己摸索搞起来比较心累.浙里办单点登陆需要在IRS上走申请,审核流程通过后,和指 ...

  5. 企业级项目|用Python进行web开发企业统一用户认证和权限控制平台

    目前大家对Python的了解更多来源是数据分析.Ai.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...

  6. 07-整合阿里云oss用户认证就诊人CRUD平台统一管理用户

    文章目录 一.整合oss 1.注册开通阿里云oss 2.获取我们必须的参数 3.进入JavaSDK学习使用上传文件 (1)引入依赖 (3)文件上传(流式文件上传) 4.项目整合OSS (1)创建OSS ...

  7. 微信公众平台开发 高级群发接口

    在这篇微信公众平台高级接口开发教程中,我们将介绍如何使用接口实现微信公众平台群发功能.本文分为以下四个部分:准备群发内容选择群发对象执行群发接收群发结果一.准备群发内容群发内容可以是文本.图片.语音. ...

  8. Samba服务器原理及实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维)

    本文目录 Samba服务器概念与原理 一.引子 二.samba原理及基本概念 三.samba共享实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维) Samba服务器概念与原理 一. ...

  9. 《锋迷商城》——用户认证

    <锋迷商城>系列项目 链接: <一> 项目搭建 链接: <二>数据库的创建 链接: <三>业务流程设计 链接: <四>业务流程实现:用户管理 ...

最新文章

  1. mysql 5.7 full_MySQL5.7默认打开ONLY_FULL_GROUP_BY 解决方案
  2. 深度学习项目代码阅读建议
  3. 京东运营插件_技术中台产品经理必知的那些易混词儿(1):组件、套件、 中间件、插件……...
  4. EndNote 高校_【工具】EndNote使用小记
  5. Shell编程常用命令
  6. 细水长flow之f-VAEs:Glow与VAEs的联姻
  7. 镜像电流源特点_模电中的电流源电路
  8. Python_自定义关键字的使用
  9. 加载exe的PE信息并输出相关PE信息的一段c++代码
  10. ASP.NET Core 2.0使用Log4net实现记录日志功能
  11. 向MFC应用程序添加控制台窗口
  12. 计算机间盘的使用方法,电脑怎样分盘操作,史上最全分盘操作教程示意图
  13. 泛微OA如何重置管理员密码
  14. smtp服务器组件,配置exchange Smtp服务器
  15. linux联网是否,Linux命令 查看Linux版本和是否联网
  16. 移动支付服务商加盟/微信支付宝扫码支付代理加盟
  17. 【win10操作系统基础】我的电脑 控制面板 win10桌面图标有个箭头如何不显示 去掉win10桌面图标箭头的方法
  18. 祖先祖先基因组重建研究
  19. 《自控力》第六章读书笔记
  20. 项目-Holocubic透明桌面站(基于STM32)

热门文章

  1. Docker专题(二)-Docker安装与启动
  2. 大学三年积累的教学资源分享和推荐!
  3. 小傻蛋的妹妹跟随小甲鱼学习Python的第十七节017
  4. 关于CNN的可解释性
  5. 设置TinyMCE在线HTML编辑控件只读
  6. JSON反序列化失败:although at least one Creator exists): can only instantiate non-static inner class by usi
  7. 学习笔记22/1/10
  8. 到底什么是信息检索?
  9. Goop:滚吧,小怪兽
  10. 文思海辉 墨尔本_如果您在墨尔本,请来看看我们的圣诞礼物!