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

举报
曲鸟 发表于 2021/12/27 19:10:55 2021/12/27
【摘要】 一、前言对于一个系统来讲,用户模块是非常基本且重要的。搭建的测试平台也需要对用户、用户权限等进行管理。下面为你讲解如何通过DRF来快速的做一个用户登录的验证接口。完整教程地址:《从0搭建自动化测试平台》项目在线演示地址:http://121.43.43.59/ (帐号:admin 密码:123456) 二、验证登录讲解 1)创建用户进入django的项目目录,执行下面的命令进行用户的...

一、前言

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


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

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


二、验证登录讲解

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()  # 删除原来的token
        token = Token.objects.create(user=user)  # 创建新的token
        return Response(data={'msg': '登录成功!', 'token': token.key})  # 返回登录信息及token
    return Response(data={'msg': '用户名或错误!'}, status=status.HTTP_401_UNAUTHORIZED)


5)指定路由url

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

from django.urls import path
from user.views import login

app_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 include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('user/', include('user.urls', namespace='user')),
]

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


7)验证效果

启动项目后,通过postman或者jmeter携带接口参数(这里以jmeter举例)进行请求:
在这里插入图片描述


请求结果


在这里插入图片描述


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


三、总结

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

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


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。