前端用json-server来Mock后端返回的数据处理

<html><body><div class="login-container"><h2>登录</h2><div class="login-form"><div class="form-group"><input type="text" id="username" placeholder="请输入用户名" /></div><div class="form-group"><input type="password" id="password" placeholder="请输入密码" /></div><button class="login-btn" onclick="handleLogin()">登录</button><div class="form-links"><a href="#">忘记密码?</a><a href="#">注册账号</a></div><script>function handleLogin() {const username = document.getElementById('username').value;const password = document.getElementById('password').value;// 这里可以添加用户名和密码的验证逻辑if(username && password) {// 发送登录请求到本地模拟的APIfetch('http://localhost:3000/users').then(response => response.json()).then(data => {const user = data.find(u => u.username === username && u.password === password);if(user) {// 登录成功,跳转到后台管理页面localStorage.setItem('token', user.token);  // 模拟保存tokenwindow.location.href = 'dashboard.html';  // 跳转到同级的后台管理页面} else {alert('用户名或密码错误');}}).catch(error => {alert('登录失败,请稍后重试');});} else {alert('请输入用户名和密码');}}</script></div></div><div class="beian-container"><a href="https://beian.miit.gov.cn/" target="_blank">备案号: 粤B2-20090059-1623A</a></div><style>body {margin: 0;min-height: 100vh;display: flex;align-items: center;justify-content: center;background-color: #f5f5f5;position: relative;}.login-container {width: 100%;max-width: 400px;padding: 20px;box-shadow: 0 0 10px rgba(0,0,0,0.1);border-radius: 5px;background-color: white;}.login-container h2 {text-align: center;color: #333;margin-bottom: 30px;}.form-group {margin-bottom: 20px;}.form-group input {width: 100%;padding: 10px;border: 1px solid #ddd;border-radius: 4px;font-size: 14px;box-sizing: border-box;}.login-btn {width: 100%;padding: 12px;background-color: #1890ff;color: white;border: none;border-radius: 4px;cursor: pointer;font-size: 16px;}.login-btn:hover {background-color: #40a9ff;}.form-links {margin-top: 15px;text-align: center;}.form-links a {color: #1890ff;text-decoration: none;margin: 0 10px;font-size: 14px;}.form-links a:hover {text-decoration: underline;}.beian-container {position: fixed;bottom: 20px;left: 0;right: 0;text-align: center;}.beian-container a {color: #666;text-decoration: none;font-size: 20px;}.beian-container a:hover {color: #1890ff;}</style></body>
</html>

为了基于上述代码模拟登录,并让本地访问后台管理页面,你可以通过以下步骤来实现:

  1. 确保后端接口存在:你需要确保本地有一个接口(例如 /api/login)来模拟登录请求的处理。因为你的代码中使用的是 fetch 来发送请求到该接口,后端会返回模拟数据。

  2. 使用前端本地模拟 API:如果没有真正的后端,你可以使用 JavaScript 来模拟登录 API。你可以将登录接口本地化,只是直接返回你希望的 mock 数据。

  3. 本地开发环境搭建

    • 你可以使用简单的 HTTP 服务器来提供本地服务(例如通过 node.jspython 搭建)。
    • 或者,你可以使用现有的工具(如 json-server)来创建一个 mock 的 RESTful API。

使用 json-server 来模拟后端

  1. 安装 json-server: 首先,你需要安装 json-server 来模拟后端 API。使用 npmyarn 安装:

npm install -g json-server

如果npm下载的有点慢的话,可以参考下面这篇文章,切换到淘宝镜像源去下载。

npm i 安装依赖卡慢,失败,等很久,不成功,错误等等_npm i 很慢-CSDN博客

        2. 创建一个模拟数据文件: 在你的项目目录下创建一个 db.json 文件,这个文件将用来模拟后端数据,例如:

{"users": [{"username": "user","password": "123","success": true,"token": "mock-jwt-token-123","userId": "mock-user-001","role": "user"}]
}

3. 启动 json-server: 使用以下命令启动本地 API 服务器:

json-server --watch db.json --port 3000
  • 这样,你就启动了一个 RESTful API 服务器,模拟 /api/login 接口。

4. 修改前端代码: 你需要将 fetch 请求中的 URL 修改为本地模拟的 API 地址,例如:

fetch('http://localhost:3000/users')

或者根据用户名和密码进行匹配,具体实现可以在前端模拟,或者通过 json-serverroutes 配置来实现。

后台管理页面 (Dashboard)

你需要在 /dashboard.html 页面中,根据 localStorage 中保存的 token 来显示用户的后台管理页面内容。

<html><body><div class="dashboard-container"><h2>后台管理页面</h2><p>欢迎,您已经成功登录!</p><button onclick="logout()">退出登录</button></div><script>// 检查 localStorage 中是否有 tokenconst token = localStorage.getItem('token');if (!token) {// 如果没有 token,则重定向到登录页面window.location.href = 'index.html';}function logout() {// 清除 localStorage 中的 tokenlocalStorage.removeItem('token');// 退出后重定向回登录页面window.location.href = 'index.html';}</script><style>body {margin: 0;min-height: 100vh;display: flex;align-items: center;justify-content: center;background-color: #f5f5f5;}.dashboard-container {width: 100%;max-width: 600px;padding: 20px;box-shadow: 0 0 10px rgba(0,0,0,0.1);border-radius: 5px;background-color: white;text-align: center;}.dashboard-container h2 {margin-bottom: 20px;}.dashboard-container button {padding: 10px 20px;background-color: #1890ff;color: white;border: none;border-radius: 4px;cursor: pointer;font-size: 16px;}.dashboard-container button:hover {background-color: #40a9ff;}</style></body>
</html>

代码解析:

  • 登录页面 (index.html):

    • 用户名和密码填写后,点击登录按钮触发 handleLogin 方法。
    • 方法会发送一个请求到本地模拟的 API (http://localhost:3000/users),通过匹配用户名和密码来判断是否登录成功。
    • 成功登录后,模拟将一个 JWT token 存储在 localStorage 中,并跳转到 dashboard.html 页面。
  • 后台管理页面 (dashboard.html):

    • 在页面加载时,会检查 localStorage 是否存在 token。如果没有,说明用户没有登录,页面会重定向回登录页面 (index.html)。
    • 如果 token 存在,则认为用户已登录,显示后台管理界面,并提供一个退出登录按钮,点击后清除 localStorage 中的 token 并重定向回登录页面。

通过这样的设置,你可以实现一个简单的前端模拟登录系统,并允许用户登录后访问后台管理页面。

运行之后,在登录页面输入user、123点击登录

即可进入到后台管理页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/505437.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

是德科技M9010A PXIe 机箱+M9037A模块,台式应用的理想之选

Keysigh是德科技M9010A PXIe 机箱M9037A模块 M9010A PXIe 10 插槽 Gen 3 机箱提供***的灵活性、兼容性和性能&#xff0c;而且外形更小巧&#xff0c;是台式应用的理想之选。它拥有 8 个 PXIe 混合插槽&#xff0c;使系统设计人员能够更灵活地混合和搭配 PXIe 和混合兼容模块的…

【算法刷题】leetcode hot 100 滑动窗口

文章目录 3. 无重复字符的最长子串438. 找到字符串中所有字母异位词总结 3. 无重复字符的最长子串 leetcode&#xff1a;https://leetcode.cn/problems/longest-substring-without-repeating-characters/?envTypestudy-plan-v2&envIdtop-100-liked 滑动窗口 &#xff0…

企业级PHP异步RabbitMQ协程版客户端 2.0 正式发布

概述 workerman/rabbitmq 是一个异步RabbitMQ客户端&#xff0c;使用AMQP协议。 RabbitMQ是一个基于AMQP&#xff08;高级消息队列协议&#xff09;实现的开源消息组件&#xff0c;它主要用于在分布式系统中存储和转发消息。RabbitMQ由高性能、高可用以及高扩展性出名的Erlan…

基于SpringBoot的洗浴管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

直流无刷电机控制(FOC):电流模式

目录 概述 1 系统框架结构 1.1 硬件模块介绍 1.2 硬件实物图 1.3 引脚接口定义 2 代码实现 2.1 软件架构 2.2 电流检测函数 3 电流环功能实现 3.1 代码实现 3.2 测试代码实现 4 测试 概述 本文主要介绍基于DengFOC的库函数&#xff0c;实现直流无刷电机控制&#x…

51单片机——串口通信(重点)

1、通信 通信的方式可以分为多种&#xff0c;按照数据传送方式可分为串行通信和并行通信&#xff1b; 按照通信的数据同步方式&#xff0c;可分为异步通信和同步通信&#xff1b; 按照数据的传输方向又可分为单工、半双工和全双工通信 1.1 通信速率 衡量通信性能的一个非常…

oracle位运算、左移右移、标签算法等

文章目录 位运算基础与或非同或同或应用场景 异或异或应用场景 什么是真值表 oracle基础函数创建bitor(按位或)函数bitnot(按位非)函数bitxor(按位异或)函数左移函数BITSHIFT()函数(实测不可用&#xff0c;废弃掉该方案)右移函数(略&#xff0c;有此场景吗?) 实际应用资质字典…

VS2015 + OpenCV + OnnxRuntime-Cpp + YOLOv8 部署

近期有个工作需求是进行 YOLOv8 模型的 C 部署&#xff0c;部署环境如下 系统&#xff1a;WindowsIDE&#xff1a;VS2015语言&#xff1a;COpenCV 4.5.0OnnxRuntime 1.15.1 0. 预训练模型保存为 .onnx 格式 假设已经有使用 ultralytics 库训练并保存为 .pt 格式的 YOLOv8 模型…

python无需验证码免登录12306抢票 --selenium(2)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 就在刚刚我抢的票&#xff1a;2025年1月8日…

本地手集博客id“升级”在线抓取——简陋版——(2024年终总结1.1)

我之前每每发布笔记都用csv纯文本记录&#xff0c;一个机缘巧得文章列表api实现在线整理自已的文章阅读量数据。 (笔记模板由python脚本于2025年01月10日 18:48:25创建&#xff0c;本篇笔记适合喜欢钻牛角尖的coder翻阅) 【学习的细节是欢悦的历程】 Python官网&#xff1a;htt…

工业 4G 路由器赋能远程医疗,守护生命线

在医疗领域&#xff0c;尤其是偏远地区的医疗救治场景中&#xff0c;工业 4G 路由器正发挥着无可替代的关键作用&#xff0c;宛如一条坚韧的 “生命线”&#xff0c;为守护患者健康持续赋能。 偏远地区医疗资源相对匮乏&#xff0c;常常面临着专业医生短缺、诊疗设备有限等困境…

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…

Nginx入门笔记

Nginx入门笔记 一、Nginx基本概念二、代理1、正向代理2、反向代理 三、准备工作1、CentOS 7安装nginx&#xff08;1&#xff09;. 安装必要的依赖&#xff08;2&#xff09;下载nginx&#xff08;3&#xff09;编译安装&#xff08;4&#xff09;编译并安装 Nginx(5)启动nginx …

半导体数据分析: 玩转WM-811K Wafermap 数据集(一) AI 机器学习

在半导体行业&#xff0c;工程师依靠 CP Yield&#xff08;生产过程中芯片的合格率&#xff09;、WAT&#xff08;晶圆验收测试&#xff09;和 Particle 的晶圆图模式来识别工艺问题。然而&#xff0c;在没有人工干预的情况下将这些晶圆图模式分类是一项重大挑战。许多论文都研…

初学者关于对机器学习的理解

一、机器学习&#xff1a; 1、概念&#xff1a;是指从有限的观测数据中学习(或“猜 测”)出具有一般性的规律&#xff0c;并利用这些规律对未知数据进行预测的方法.机器学 习是人工智能的一个重要分支&#xff0c;并逐渐成为推动人工智能发展的关键因素。 2、使用机器学习模型…

GPU算力平台|在GPU算力平台部署Qwen-2通义千问大模型的教程

文章目录 一、GPU平台介绍算力平台概述 二、人工智能应用开发需要GPU算力平台GPU算力原理账号注册流程Qwen-2通义千问大模型的部署登录/注册选择SettingsURL配置选择模型部署完成进行问答 一、GPU平台介绍 算力平台概述 GPU算力平台是一个专注于GPU加速计算的专业云服务平台&…

Vue3(elementPlus) el-table替换/隐藏行箭头,点击整行展开

element文档链接&#xff1a; https://element-plus.org/zh-CN/component/form.html 一、el-table表格行展开关闭箭头替换成加减号 注&#xff1a;Vue3在样式中修改箭头图标无效&#xff0c;可能我设置不对&#xff0c;欢迎各位来交流指导 转变思路&#xff1a;隐藏箭头&…

【C++】C++11(二)

目录 九、可变参数模板十、lambda表达式10.1 C98中的一个例子10.2 lambda表达式10.3 lambda表达式语法10.3.1 lambda表达式各部分说明10.3.2 捕获列表说明 10.4 函数对象与lambda表达式 十一、包装器11.1 function包装器11.2 bind 十二、线程库12.1 线程12.1.1 thread类的简单介…

针对数据库系统安全的漏洞扫描加固工具【WebSocket + MySQL】

一、系统背景 随着信息技术的迅猛发展和互联网的普及&#xff0c;数据库作为存储、管理和检索大量数据的关键组件&#xff0c;其安全性对于企业和组织来说至关重要。然而&#xff0c;由于网络环境的复杂性和攻击手段的多样性&#xff0c;数据库面临着越来越多的安全威胁&#…

Photon最新版本PUN 2.29 PREE,在无网的局域网下,无法连接自己搭建的本地服务器

1.图1为官方解答 2.就是加上这一段段代码&#xff1a;PhotonNetwork.NetworkingClient.SerializationProtocol SerializationProtocol.GpBinaryV16; 完美解决 unity 商店最新PUN 2 插件 不能连接 &#xff08;环境为&#xff1a;本地局域网 无外网情况 &#xff09; …