Vue开发实例(十三)用户登录功能

使用Vue实现登录具有以下几个好处:

  1. 响应式界面:Vue框架的响应式特性可以帮助开发者轻松地实现用户登录界面的交互效果,包括表单验证、实时错误提示等,从而提升用户体验。
  2. 组件化开发:Vue框架支持组件化开发,可以将登录页面拆分成多个组件,使得代码结构清晰,易于维护和扩展。
  3. 路由管理:Vue框架内置了Vue Router,能够方便地管理前端路由,包括登录后的页面跳转、权限控制等,使得整个登录流程更加清晰和灵活。
  4. 状态管理:借助Vuex状态管理工具,可以统一管理用户的登录状态、用户信息等数据,方便在不同组件中进行状态共享和更新。
  5. 第三方库支持:Vue框架有着丰富的第三方插件和库支持,可以轻松集成各种登录认证方式、社交登录等功能,丰富了登录方式选择。

总的来说,使用Vue实现登录可以借助其响应式界面、组件化开发、路由管理、状态管理和第三方库支持等优势,为用户提供良好的登录体验,并且使得开发工作更加高效和灵活。

本文旨在实现简单的登录逻辑

文章目录

  • 前端页面实现
  • 加入后台验证
  • 退出实现

前端页面实现

  1. 创建 login.vue页面
    其中,点击确定后,会直接跳转到主页(确定按钮对应的方法,直接跳转到 “/index”路由)
confirm(){this.$router.replace(‘/index’);
}

参考代码:

<template><div class="loginbBody"><div class="loginDiv"><div class="login-content"><h1 class="login-title">用户登录</h1><el-form :model="loginForm" label-width="100px":rules="rules" ref="loginForm"><el-form-item label="名字" prop="name"><el-input style="width: 200px" type="text" v-model="loginForm.name"autocomplete="off" size="small"></el-input></el-form-item><el-form-item label="密码" prop="password"><el-input style="width: 200px" type="password" v-model="loginForm.password"show-password autocomplete="off" size="small"></el-input></el-form-item><el-form-item><el-button type="primary" @click="confirm">确 定</el-button></el-form-item></el-form></div></div></div>
</template><script>export default {name: "login",data(){return{loginForm:{name:'',password:''},rules:{}}},methods:{confirm(){this.$router.replace('/index');}}}
</script><style scoped >.loginbBody {width: 100%;height: 100%;background-color: #B3C0D1;}.loginDiv {position: absolute;top: 50%;left: 50%;margin-top: -200px;margin-left: -250px;width: 450px;height: 330px;background: #fff;border-radius: 5%;}.login-title {margin: 20px 0;text-align: center;}.login-content {width: 400px;height: 250px;position: absolute;top: 25px;left: 25px;}
</style>
  1. 在router.js中配置一级路由
    在这里插入图片描述

  2. 登录页面效果如下:
    在这里插入图片描述

  3. 加入页面验证

刚才直接点击的确定,没有做任何的判断,实际项目上肯定要做不少的判断的;
这里就加是否为空、长度这两个规则来作为验证;

在data里面加入规则的内容

rules:{name: [{ required: true, message: '请输入用户名', trigger: 'blur' },{ min: 3, max: 6, message: '用户名长度在 3 到 6 个字符', trigger: 'blur' }],password: [{ required: true, message: '请输密码', trigger: 'blur' },{ min: 3, max: 6, message: '密码长度在 3 到 6 个字符', trigger: 'blur' }]
}
  1. el-form里面的规则配置有没有到位

el-form加入 :rules=“rules” ref=“loginForm”
el-form-item 加入的prop,写入对应的值

在这里插入图片描述

  1. 修改confirm方法的代码,加入验证逻辑

this.$refs.loginForm.validate 执行验证,this.$refs.loginForm 获取当前的表单对象
valid成功为true则直接跳转到index,失败则提示红色的内容

methods: {confirm() {this.$refs.loginForm.validate((valid) => {if (valid) { //valid成功为true,失败为falsethis.$router.replace('/index');} else {console.log('校验失败');return false;}});}}

加入后台验证

  • 用mockjs模拟后台登录验证,并返回token
Mock.mock('/login','post', (param)=>{let state=0;let body = JSON.parse(param.body);console.log(body)let data;//模拟成功数据if(body.name=='admin'&&body.password=='123'){state=1;data = Mock.mock({"token": "@guid()",//模拟token"name": "@cname",//随机生成中文名字随机生成中文名字});}return{"state":state,"vData":data}
});
  • 在storejs里面将token存储

state 添加token属性,位置:store/store.js

在这里插入图片描述

  • mutations 增加 SET_TOKEN 方法,将token存储到state和localStorage 中
    在这里插入图片描述
  • login.vue的确定方法confirm做修改
    提交登录信息到后台,验证成功后则登录并存储token信息,验证不成功提示失败
methods: {confirm() {this.$refs.loginForm.validate((valid) => {if (valid) { //valid成功为true,失败为false//去后台验证用户名密码,并返回tokenthis.$axios.post('/login', this.loginForm).then(res => {console.log(res.data)if (res.data.state == 1) {//存储token到本地this.$store.commit("SET_TOKEN", res.data.vData.token);//跳转到主页this.$router.replace('/index');} else {alert('校验失败,用户名或密码错误!');return false;}});} else {console.log('校验失败');return false;}});}}

退出实现

  • mockjs模拟退出
//退出
Mock.mock('/logout','post', ()=>{return {state:1}
});
  • store.js的mutations中添加 resetState 用于重置相关数据
resetState(state){state.token = '';localStorage.clear();
}
  • 在Header页面的退出加入点击事件
    el-dropdown-item编写click方法的时候要加入 native ,否则会点击没反应
    在这里插入图片描述
  • 在Header页面增加点击方法

成功调用后台后

  1. 清空相关数据
  2. 跳转到登录页面
logout(){this.$axios.post('/logout',this.loginForm).then(res=>{console.log(res)//清理数据this.$store.commit('resetState');//跳转到登录路由this.$router.push({path:"/login"})});
}

🆗,到此为止,登录页面的实现完成,如果需要添加自己的逻辑,那就自己继续完善~~~

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

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

相关文章

【AI学习】卷积神经网络的由来

乱读书&#xff0c;看见这么这段话&#xff1a; “生物的眼睛以精巧的方式与大脑相连。视网膜上的感光细胞&#xff08;人眼的视杆或视锥&#xff09;并不直接连接到单个神经元上&#xff0c;而是会有一整片区域的神经元与每一个感光细胞相连接。相邻的神经元会连接到视网膜上相…

最新版npm详解

如&#xff1a;npm中搜索 jQuery image.png image.png 接地气的描述&#xff1a;npm 类似于如下各大手机应用市场 image.png image.png 查看本地 node 和 npm 是否安装成功 image.png image.png 或 npm install -g npm image.png image.png image.png image.png image.…

【数据库】MySQL

文章目录 概述DDL数据库操作查询使用创建删除 表操作创建约束MySqL数据类型数值类型字符串类型日期类型 查询修改删除 DMLinsertupdatedelete DQL基本查询条件查询分组查询分组查询排序查询分页查询 多表设计一对多一对一多对多设计步骤 多表查询概述内连接外连接 子查询标量子…

这所211专硕22408复试线310分,学硕收调剂!辽宁大学计算机考研考情分析!

辽宁大学信息学院下设计算机科学与技术、电子信息科学与技术、通信工程、信息管理与信息系统、软件工程5个本科专业&#xff0c;有计算机软件与理论、计算机应用技术2个硕士学位授权点&#xff0c;软件工程和计算机技术两个专业硕士学位点&#xff0c;1个计算机应用研究所、1个…

wordpress woocommer 添加代码实现,点击按钮,将产品添加到购物车并且跳转到结账页面

wordpress woocommer 添加代码实现&#xff0c;点击按钮&#xff0c;将产品添加到购物车并且跳转到结账页面 案列代码1&#xff0c;解决的是普通产品的 //短代码生成按钮&#xff0c;传入短代码&#xff0c;点击直接到达结账页面 function add_product_to_cart_button($atts)…

案例题(第一版)

案例题目 软件架构设计考点&#xff08;历年必考&#xff09; 软件架构设计通常在每年的第一题&#xff0c;该题必考 必备概念 必备概念即考试必须要默写出来的概念 概念描述软件架构风格是指描述特定软件系统组织方式和惯用模式。组织方式描述了系统的组成构件和这些构件的组…

在Spring Boot项目中通过自定义注解实现多数据源以及主备数据库切换

在现代的企业应用开发中&#xff0c;使用多数据源是一个常见的需求。尤其在关键应用中&#xff0c;设置主备数据库可以提高系统的可靠性和可用性。在这篇博客中&#xff0c;我将展示如何在Spring Boot项目中通过自定义注解实现多数据源以及主备数据库切换。 在此说明&#xff…

【HTML】制作一个跟随鼠标的流畅线条引导页界面(可直接复制源码)

目录 前言 HTML部分 CSS部分 JS部分 效果图 总结 前言 无需多言&#xff0c;本文将详细介绍一段HTML代码&#xff0c;图中线条可跟随鼠标移动&#xff0c;具体内容如下&#xff1a; 开始 首先新建一个HTML的文本&#xff0c;文本名改为[index.html]&#xff0c;创建好后右…

【逻辑漏洞】验证码绕过

【逻辑漏洞】验证码绕过 参数操纵值提取和重用自动化和识别其他测试 参数操纵 随机应变的请求方法&#xff1a;清空发送验证码参数。尝试更改HTTP方法从POST到GET或其他动词&#xff0c;并更改数据格式&#xff0c;例如在表单数据和JSON之间切换。发送空验证码&#xff1a;提交…

第十一节 SpringBoot Starter 面试题

一、面试题 很多同学的简历都写着熟悉 SpringBoot&#xff0c; 而 Starter 的实现原理被当作的考题的的情况越来越多。 来源牛客网关于 starter 的一些面试题 情景一、路虎一面 情景二、蔚来 情景三、同花顺 Starter 频频出现&#xff0c;因此在面试准备时&#xff0c;这道题…

mdm 推送证书制作教程

第一步点击获取&#xff0c;点击以后会下载一个zip压缩包 解压以后&#xff1a;会得到四个文件&#xff0c;请务必保存好&#xff0c;待会需要使用 登录apple开发者官网 https://developer.apple.com/account/resources/certificates/list 点击添加证书 找到mdm csr 然后点击…

赶紧收藏!2024 年最常见 20道 Redis面试题(六)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 20道 Redis面试题&#xff08;五&#xff09;-CSDN博客 十一、Redis集群之间是如何复制的&#xff1f; Redis 集群是一个分布式系统&#xff0c;它由多个节点组成&#xff0c;这些节点共同存储数据并提供服务。在 R…

C++小游戏 合集

生化危机 #include<conio.h> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #include<direct.h> int n,round,gold0; bool f1,f2,f3,deadfalse,PC_64Bit; char str[4]; struct n…

用Python代码批量提取PDF文件中的表格

PDF文档中常常包含大量数据&#xff0c;尤其是官方报告、学术论文、财务报表等文档&#xff0c;往往包含了结构化的表格数据。表格作为承载关键信息的载体&#xff0c;其内容的准确提取对于数据分析、研究论证乃至业务决策具有重大意义。然而&#xff0c;PDF格式虽保证了文档的…

Vue从入门到实战Day12

一、Pinia快速入门 1. 什么是Pinia Pinia是Vue的最新状态管理工具&#xff0c;是Vuex的替代品 1. 提供更加简单的API&#xff08;去掉了mutation&#xff09; 2. 提供符合组合式风格的API&#xff08;和Vue3新语法统一&#xff09; 3. 去掉了modules的概念&#xff0c;每一…

C++|设计模式(二)|简单工厂和工厂方法模式

本文探讨两种广泛使用的创建型模式——简单工厂模式和工厂方法模式&#xff0c;解释他们的实现细节、优势以及应用场景。 在下一篇文章中&#xff0c;我会补充抽象工厂模式&#xff0c;其实工厂模式主要就是为了封装对象的创建过程&#xff0c;如果我们不进行封装&#xff0c;…

人工智能应用-实验7-胶囊网络分类minst手写数据集

文章目录 &#x1f9e1;&#x1f9e1;实验内容&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;代码&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;分析结果&#x1f9e1;&#x1f9e1;&#x1f9e1;&#x1f9e1;实验总结&#x1f9e1;&#x1f9e1; &#x1f9…

Python TCP编程简单实例

客户端&#xff1a;创建TCP链接时&#xff0c;主动发起连接的叫做客户端 服务端&#xff1a;接收客户端的连接 连接其他服务器 可以通过tcp连接其他服务器。 示例&#xff1a; import socket# 1.创建一个socket # 参数1&#xff1a;指定协议 AF_INET&#xff08;ipv4&#…

LeetCode1466重新规划路线

题目描述 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部决定重新规划路线&#xff0c;以改变交通拥堵的…