Vue实现登录以及登出详解
作者:难过的新手村 发布时间:2023-07-02 16:59:51
标签:Vue,登陆
首先先了解一下,我们的效果实现流程
首先登录概述及业务流程和相关技术点
录页面的布局
创建两个Vue.js文件
一个我们来做登录页和注册页
登录页面的布局
配置路由
登录表单的数据绑定
登录表单的验证规则
登录表单的重置
登录预验证
登录组件配置弹窗提示
登录成功后的行为
将登录之后的token,保存到客户端的sessionStorage中
通过编程式导航跳转到后台主页,路由地址是默认路径 '/'
在我们首页的登出,组件配置弹窗提示,把我们的token使用removeItem删除
登录业务流程
1.在登录页面输入用户名和密码
2.调用后台接口进行验证
3.通过验证之后,根据后台得响应状态跳转到项目主页
登录功能实现
1.首先我们用路由守卫来验证登录,判断是否与需要登录
{
path:'/login',
name:"login",
component:login,
meta:{
login:true
}
}
// 需要登录的地方定义meta-true 看他需不需要登录
if(to.matched.some(item=>item.meta.login)){//需要登录
console.log("需要登录");
if(isLogin){//1.已经登录,直接通过
if(data.error===400){//后端告诉你,登录不成功
next({name:'login'})
localStorage.removeItem('token');
return;
}
if(to.name==='login'){
next({name:'Home'})
}else{
next()
}
return;
}
if(!isLogin && to.name==='login'){//2.未登录,但要去登录页
next()
}
if(!isLogin && to.name !=='login'){//3.未登录,去的也不是登录页
next({name:"login"})
}
}else{//不需要登录直接进
next()
}
2.表单的验证规则,我们用的是Element的组件库
在模板中用Element编写我们的样式布局
<div class="login-section">
<!-- :rules="rules" -->
<el-form
label-position="top"
label-width="100px" class="demo-ruleForm"
:rules="rules"
:model="rulesFrom"
status-icon
ref="ruleFrom"
>
<el-form-item label="用户名" prop="name">
<!-- 使用v-model来获取用户输入的名字 -->
<el-input type="text" v-model="rulesFrom.name"></el-input>
</el-form-item>
<el-form-item label="密码" prop="password"></el-form-item>
<!-- 使用v-model来获取用户输入的密码 -->
<el-input type="password" v-model="rulesFrom.password"></el-input>
</el-form-item>
<el-form-item>
<!-- 定义提交事件 -->
<el-button type="primary" @click="submitFrom('ruleFrom')">提交</el-button>
<el-button>重置</el-button>
</el-form-item>
</el-form>
</div>
定义表单的验证规则
详细的看Element官网from表单
在Data里面定义
rulesFrom:{
name:'',
password:''
},
rules:{
name:[
// 验证规则
{required:true,message:'请输入用户名',trigger:'blur'},
{min:1,max:5,message:'长度在1到5个字符',trigger:'blur'}
],
password:[
{required:true,message:'请输入密码',trigger:'blur'},
{min:1,max:5,message:'长度在1到5个字符',trigger:'blur'}
]
}
在methods定义提交事件
// 当我们点击提交的时候能出发方法能拿到表单的所有东西
submitFrom(formName){
this.$refs[formName].validate( (valid)=>{
if(valid){
// 如果校检通过,再里向后端返送用户信息和密码
login({
name:this.rulesFrom.name,
password:this.rulesFrom.password,
}).then((data)=>{
console.log(data);
if(data.code===0){
localStorage.setItem('token',data.data.token)
window.location.href='/';
}
if(data.code===1){
this.$message.error(data.mes)
}
})
}else{
console.log('error submit!!');
return false
}
})
}
这个时候把登出也写一下在router beforeEach中给他转换
const token=localStorage.getItem('token');
// !!token转换成布尔类型
const isLogin=!!token;
// 进入路由的时候,需要向后端返送token,验证是否合法
const data=await userInfo();
Store.commit('chageUserInfo',data.data)
来源:https://blog.csdn.net/weixin_57259948/article/details/120439822


猜你喜欢
- 1、需要将时间字符串转换成datetime类型,语法:data[‘time'] = pd.to_datetime(data[‘tim
- 本文实例为大家分享了梅尔倒谱系数实现代码,供大家参考,具体内容如下""" @author: zoutai@fi
- 1.简介map 是 Golang 中的方便而强大的内建数据结构,是一个同种类型元素的无序组,元素通过另一类型唯一的键进行索引。其键可以是任何
- 本节列出了可以运行MySQL的操作系统。我们使用GNU Autoconf,因此将MySQL移植到所有使用Posix线程和C++编译器的现代系
- 本文实例讲述了Python 静态方法和类方法。分享给大家供大家参考,具体如下:1. 类属性、实例属性它们在定义和使用中有所区别,而最本质的区
- insert into(列名) select 列名 from 表名 where 条件 --不创建表,只复制表数据 select 列名 int
- 1、函数介绍REGEXP_LIKE 函数在功能上与 LIKE 函数非常相似。 然而,虽然 LIKE 允许简单的字符串匹配搜索,但 REGEX
- 一、简介:1、cron包cron包:"github.com/robfig/cron/v3"文档:cron package
- 本篇没有考虑异步,多线程及SQL注入WebDatabase 规范中说这份规范不再维护了,原因是同质化(几乎实现者都选择了Sqlite),且不
- 在使用Dreamweaver制作主页的时候往往需要改变表格的高度。然而有时当我们拖动表格的边框,无论怎样拖动,等到放下鼠标,表格却又恢复到原
- sql语句有一个非常长的sql,用编辑器打开编写的时候太长了导致编写非常吃力,而且容易错乱,我想做的是把A,B,C三个变量赋值到sql中的字
- 前言表是数据库存储数据的基本单位。一个表包含若干个字段或记录。表的操作包括创建新表、修改表和删除表。这些操作都是数据库管理中最基本,也是最重
- 摘要:本篇博客将详细介绍如何使用YOLOv5进行车牌识别模型的训练与评估。我们将搭建训练环境、准备数据、配置模型参数、启动训练过程,以及使用
- 环境Python 3.7.4pymysql8.0.11 MySQL Community Server读取图片以二进制格式读取图片with o
- 创建RandomWalk类为模拟随机漫步,我们将创建一个RandomWalk类,随机选择前进方向,这个类有三个属性,一个存储随机漫步的次数,
- 本文主要研究的是Python对内存的使用(深浅拷贝)的相关问题,具体介绍如下。浅拷贝就是对引用的拷贝(只拷贝父对象) 深拷贝就是对对象的资源
- 如果你完全不懂,那么期望1-2周看完一遍拉倒....不用看的太仔细,后面再看到不懂的时候回头去看这些东西好了1. 前言和准备工作 这里不会介
- 一般事件事件浏览器支持描述onClickIE3|N2|O3鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClickIE4|N4
- 一、shutil模块(了解):高级的文件、文件夹、压缩包处理模块。import shutil# shutil.copyfileobj(fsr
- 一、简介 transitions库pip install transitions状态机 state:状态节点transition: