自动化测试平台(二):开发用户认证接口
一、前言
对于一个系统来讲,用户模块是非常基本且重要的。搭建的测试平台也需要对用户、用户权限等进行管理。下面为你讲解如何通过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认证》 进行学习。
自动化测试平台(二):开发用户认证接口相关推荐
- 禅道PMS兼容redmine用户认证接口
项目地址:https://github.com/web3d/zentao-redmine-userauth zentao-redmine-userauth 做了一个基本的用户认证接口,兼容redmin ...
- 在MapInfo平台上开发用户定制的应用程序的编程语言 MapBasic v6.0 1CD
在MapInfo平台上开发用户定制的应用程序的编程语言 MapBasic v6.0 1CD IDRISI.Andes.v15.00-ISO 1CD(地理信息系统(GIS)及图象处理软件) IDRISI ...
- 尚医通 (十九)用户认证
目录 一.对象存储OSS 1.开通"对象存储OSS"服务 2.创建Bucket 3.上传默认头像 4.创建RAM用户 5.使用SDK 二.后端集成OSS 1.新建云存储微服务 2. ...
- 浙里办开发票据认证单点登陆、令牌获取用户信息
浙里办开发票据认证单点登陆.令牌获取用户信息(JAVA后端处理) 最近在搞浙里办开发,周边的人里都没人接触过,以至于自己摸索搞起来比较心累.浙里办单点登陆需要在IRS上走申请,审核流程通过后,和指 ...
- 企业级项目|用Python进行web开发企业统一用户认证和权限控制平台
目前大家对Python的了解更多来源是数据分析.Ai.运维工具开发,在行业中使用Python进行web开发,同样也是非常受欢迎的,例如:FaceBook,豆瓣,知乎,饿了么等等,本文主要是介绍是利用P ...
- 07-整合阿里云oss用户认证就诊人CRUD平台统一管理用户
文章目录 一.整合oss 1.注册开通阿里云oss 2.获取我们必须的参数 3.进入JavaSDK学习使用上传文件 (1)引入依赖 (3)文件上传(流式文件上传) 4.项目整合OSS (1)创建OSS ...
- 微信公众平台开发 高级群发接口
在这篇微信公众平台高级接口开发教程中,我们将介绍如何使用接口实现微信公众平台群发功能.本文分为以下四个部分:准备群发内容选择群发对象执行群发接收群发结果一.准备群发内容群发内容可以是文本.图片.语音. ...
- Samba服务器原理及实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维)
本文目录 Samba服务器概念与原理 一.引子 二.samba原理及基本概念 三.samba共享实验搭建(匿名共享,用户认证,权限设置,IP限制,目录挂载,桌面运维) Samba服务器概念与原理 一. ...
- 《锋迷商城》——用户认证
<锋迷商城>系列项目 链接: <一> 项目搭建 链接: <二>数据库的创建 链接: <三>业务流程设计 链接: <四>业务流程实现:用户管理 ...
最新文章
- mysql 5.7 full_MySQL5.7默认打开ONLY_FULL_GROUP_BY 解决方案
- 深度学习项目代码阅读建议
- 京东运营插件_技术中台产品经理必知的那些易混词儿(1):组件、套件、 中间件、插件……...
- EndNote 高校_【工具】EndNote使用小记
- Shell编程常用命令
- 细水长flow之f-VAEs:Glow与VAEs的联姻
- 镜像电流源特点_模电中的电流源电路
- Python_自定义关键字的使用
- 加载exe的PE信息并输出相关PE信息的一段c++代码
- ASP.NET Core 2.0使用Log4net实现记录日志功能
- 向MFC应用程序添加控制台窗口
- 计算机间盘的使用方法,电脑怎样分盘操作,史上最全分盘操作教程示意图
- 泛微OA如何重置管理员密码
- smtp服务器组件,配置exchange Smtp服务器
- linux联网是否,Linux命令 查看Linux版本和是否联网
- 移动支付服务商加盟/微信支付宝扫码支付代理加盟
- 【win10操作系统基础】我的电脑 控制面板 win10桌面图标有个箭头如何不显示 去掉win10桌面图标箭头的方法
- 祖先祖先基因组重建研究
- 《自控力》第六章读书笔记
- 项目-Holocubic透明桌面站(基于STM32)
热门文章
- Docker专题(二)-Docker安装与启动
- 大学三年积累的教学资源分享和推荐!
- 小傻蛋的妹妹跟随小甲鱼学习Python的第十七节017
- 关于CNN的可解释性
- 设置TinyMCE在线HTML编辑控件只读
- JSON反序列化失败:although at least one Creator exists): can only instantiate non-static inner class by usi
- 学习笔记22/1/10
- 到底什么是信息检索?
- Goop:滚吧,小怪兽
- 文思海辉 墨尔本_如果您在墨尔本,请来看看我们的圣诞礼物!