测试平台系列(9) 与前端联调注册/登录接口(part 2)

简介: 与前端联调注册/登录接口(part 2)

与前端联调注册/登录接口(part 2)


回顾

上篇我们说啥来着,噢对说要跟前端联调来着。这期呢,咱们就开始着手写这块内容。

这里如果前端不太擅长的呢,代码你就别仔细看了,因为你肯定也不太理解(虽然我还是会讲讲)。

你只需要搬个小板凳,看看具体解决了哪些问题就行,不需要想着怎么去写前端代码,直接copy一下就完事了!(好家伙,我直呼好家伙!)

前端IDE配置


这里我推荐Webstorm,至于vscode本人确实不太感冒,虽然会轻量级一点。(我就是喜欢jetbrains全家桶)

如果没有的话,可以用Pycharm下载Webstorm插件进行开发。

建立配置文件


首先我们第一步先建立配置文件: pityWeb\src\consts\config.js


export const CONFIG = {
  URL: 'http://localhost:7777',
  ROLE: {
    0: 'user',
    1: 'admin',
    2: 'superAdmin'
  }
}

存储我们的后端地址和用户角色信息。

查看Antd pro的登录model(pityWeb\src\models\login.js)


1.jpg

image

可以看到默认采用的fakeAccountLogin方法(这里被我注释掉了),我们找到他:

改造登录接口(pityWeb\src\services\login.js)


2.jpg

image

代码很简单,由于antd pro给我们封装好了基本的Request方法,所以我们可以直接按部就班,依葫芦画瓢写出请求auth/login的程序,完整代码:


import { CONFIG } from '@/consts/config';
export async function login(params) {
  return request(`${CONFIG.URL}/auth/login`, {
    method: 'POST',
    data: params
  })
}

修改用户的登录状态


仔细看model中的login方法,它做了2步:

  1. 登录(mock)
  2. 将登录成功/失败的信息传入changeLoginStatus方法

我们看看changeLoginStatus方法做了什么:

3.jpg

image

  1. 先设置用户的权限,这里我把ROLE已经带入进来
  2. 设置当前状态: ok代表登录成功 error代表未成功,由于咱们用的不是status状态判断用户是否登录成功,所以需要修改为三元表达式: payload.code === 0 ? 'ok': 'error'


上述具体返回信息可以从下图中看到

4.jpg

image

这里代码我们进行相应调整:


changeLoginStatus(state, { payload }) {
      // setAuthority(payload.currentAuthority);
      setAuthority(CONFIG.ROLE[payload.user.role]);
      return { ...state, status: payload.code === 0 ? 'ok': 'error', type: payload.type };
    },

5.jpg

注意这里也从mock替换成了真实接口

尝试一下


6.jpg

提示网络错误

别慌,我们F12(或者右键打开开发者工具)可以看到:

7.jpg

image

没错,我们遇到了跨域问题


跨域问题具体可以去百度一下,这里简单介绍一下,是说浏览器出于安全考虑,对于前后端域名不一致的情况下,会默认进行拦截,阻止你们进行交互。这多见于前后端分离的项目中出现。


可以从前端也可以从后端的角度来处理,我们为了方便,直接改造我们的Flask

使Flask支持跨域


我们需要先安装一个包: pip3 install flask-cors

然后进行如下改造:

8.jpg

pity/app/__init__.py

注意这个是后端的项目哈,不要搞错了,前后端分离就是前端也搞后端也搞,需要切换。


from flask import Flask
from flask_cors import CORS
from config import Config
pity = Flask(__name__)
CORS(pity, supports_credentials=True)
pity.config.from_object(Config)

贴心的我还是贴出了源代码。

再次尝试


重启下后端服务哦记得

输入错误的用户名密码,可以看到登录按钮转了一圈又回到了原点。但是登录接口又是正常响应的:

9.jpg

image

10.jpg

image

仔细查看登录块的代码,原来是没有输出错误信息。我们继续进行改造:

11.jpg

image

12.jpg

加个else即可

message.error可以弹出错误信息: 用户名或密码错误

13.jpg

image

目的达到了,接下来我们来试试正确的用户名和密码:

14.jpg

可以看到提示成功后又报错了

我们去找到api/currentUser接口的调用地方:

15.jpg

image

可以看到是这个方法在作祟,因为antd pro会mock一个用户,它有姓名等信息,但这些我们需要真实的,所以需要给他进行一次改造:

改造获取当前用户信息


还记得我们的登录接口返回的数据吗?我们每次登录后,把它写入浏览器缓存中,这样当用户登录以后,我们从浏览器缓存取出用户信息即可。

  1. 先将用户信息和token设置到缓存

16.jpg

image

localStorage可以操作浏览器缓存,但是只接受string和string的键值对,所以我们需要把user对象序列化为string。

  1. 从缓存中取出数据

17.jpg

image

记得数据需要反序列化

  1. 修改登录判断条件,这个坑找了我很久,因为咱们的字段是id不是userId,所以我刚才卡在一直登录了自动被退出:

18.jpg

image

保存后再次尝试


19.jpg

一次点亮


好了,今天的内容就到这了。前端代码已上传~




相关文章
|
1月前
|
前端开发 JavaScript 定位技术
一、前端高德地图注册、项目中引入、渲染标记(Marker)and覆盖物(Circle)
文章介绍了如何在前端项目中注册并使用高德地图API,包括注册高德开放平台账号、引入高德地图到项目、以及如何在地图上渲染标记(Marker)和覆盖物(Circle)。
46 1
|
9天前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
36 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
10天前
|
Web App开发 前端开发 安全
前端研发链路之测试
本文由前端徐徐撰写,介绍了前端测试的重要性及其主要类型,包括单元测试、E2E测试、覆盖率测试、安全扫描和自动化测试。文章详细讲解了每种测试的工具和应用场景,并提供了选择合适测试策略的建议,帮助开发者提高代码质量和用户体验。
15 3
前端研发链路之测试
|
5天前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
5天前
|
人工智能 前端开发 JavaScript
前端大模型入门(二):掌握langchain的核心Runnable接口
Langchain.js 是 Langchain 框架的 JavaScript 版本,专为前端和后端 JavaScript 环境设计。最新 v0.3 版本引入了强大的 Runnable 接口,支持灵活的执行方式和异步操作,方便与不同模型和逻辑集成。本文将详细介绍 Runnable 接口,并通过实现自定义 Runnable 来帮助前端人员快速上手。
|
9天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
17 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
167 7
Jmeter实现WebSocket协议的接口测试方法
|
18天前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
36 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
1月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`<select>` 和 `<option>`)、文本域(`<textarea>`)、标签解释(`<label>`)、各类按钮(`<button>`)及表单重置功能、无语义布局标签(`<div>` 和 `<span>`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
1月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
159 3
快速上手|HTTP 接口功能自动化测试