element ui 登录验证,路由守卫
<template>
<!--
el-form
:label-position="labelPosition" 设置label的位置
:model 用来给表单设置数据模型(对象)
:rules 用来设置表单验证规则的
ref 用来引用当前的表单组件 el-form-item
prop 它是modle对象中的一个属性,当使用表单验证,或者表单重置的时候,必须使用该属性 -->
<div id="bbgg"> <el-row type="flex" class="row-bg" justify="center" align="middle">
<el-col id="bgc" :xs="12" :sm="10" :md="8" :lg="6" :xl="4" > <el-form :label-position="labelPosition" :model="loginForm" :rules="rules" ref="loginForm" class="demo-loginForm" >
<el-form-item label="用户名:" prop="username">
<el-input v-model="loginForm.username"></el-input>
</el-form-item> <el-form-item label="密 码:" prop="password">
<el-input v-model="loginForm.password" type="password"></el-input>
</el-form-item> <el-form-item>
<el-button type="primary" @click="submitForm">登录</el-button>
<el-button @click="resetForm">重置</el-button>
</el-form-item> </el-form> <div class="grid-content bg-purple"></div></el-col>
</el-row> </div> </template> <script>
import axios from 'axios' export default {
data() {
return {
labelPosition: 'right',
loginForm: {
username:"",
password:""
},
rules: {
username: [
// required 是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
{ 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' }
], }
};
},
methods: {
login(){//登陆功能
//使用axios发送请求
// 接口地址 http://localhost:8888/api/private/v1/Login
axios.post('http://localhost:8888/api/private/v1/Login',this.loginForm)
.then(res=>{
// const data = res.data.data
// const meta = res.data.meta
//下面是ES6中结构语法,和上边的两句话一个意思;意思是从res.data中取出data和meta
const {data,meta}=res.data
console.log(data)
if(meta.status===200){
// console.log("登录成功")
//01如果登录成功,将登录成功的标识(token)储存到localStorage中,并且跳转到主页
localStorage.setItem('token',data.token)
this.$router.push('/home')
}else{
console.log('登录失败',meta.msg)
this.$message({
message: '用户名或密码错误',
type: 'error',
duration:'1000'
}); } })
},
submitForm() {
// ref 用在组件中,就表示当前组件 通过 $refs.xxx可以拿到所有ref的集合
// this.$refs.loginForm //当前的表单对象
this.$refs.loginForm.validate((valid) => {
if (valid) { //valid成功为ture,失败为false
//发送请求 ,调用登录接口
this.login() } else {
console.log('校验失败');
return false;
}
});
},
resetForm(formName) {//表单重置
this.$refs.loginForm.resetFields();
}
}
}
</script> <style >
#app{
height: 100%;
}
#bbgg {
height: 100%;
background-color: #2d434c; }
.row-bg.el-row.is-justify-center.is-align-middle.el-row--flex{
height: 80%;
}
#nav{
padding: 0;
} #bgc{
background-color: #fff;
padding: 20px 30px;
border-radius: 10px;
min-width: 160px;
}
</style>
router.js中 设置路由守卫
import Vue from 'vue'
import Router from 'vue-router' import Login from './components/login/Login.vue'
import Home from './components/home/home.vue' Vue.use(Router) const router=new Router({
routes: [
{ path:'/Login' , component:Login},
{ path:'/Home' , component:Home}
]
}) //全局路由守卫
//所有的路由都会先走守卫
//添加导航守卫之后,不管是访问哪个路由,都会执行这个回调函数中的代码
//因为所有的路由,都会经过该导航守卫,所以就可以在这个导航守卫的回调函数中,判断有没有登录
router.beforeEach((to, from, next) => {//to去哪里 from从哪来 next放行 if(to.path==='/login'){//如果访问的是login页面直接方行, 不管有没有登录都可以访问login页面
next()//调用next表示:访问什么页面就展示什么页面的内容
}else{
//如果访问的不是login页面,先判断有没有登录,如果已经登录直接调用next()方法,如果没有跳转login页面 // 通过登录成功时候保存的token,来作为判断 有没有登录成功的条件
const token = localStorage.getItem('token')
if(token){
//有,登录成功
next()
}else{
// 没有,登录失败
next('/login') } } }) export default router

element ui 登录验证,路由守卫的更多相关文章
- element UI form 验证
1 form 添加rules,具体属性添加prop, 注意 prop 属性与v-model 子属性一致 2 data 对象添加 rules 3 验证方法调用 验证规则见: https://github ...
- Vue router 全局路由守卫
记录一下全局路由守卫的使用: 方法一:定义一个数组用于检测与管理需要登录的页面,全局路由守卫配合本地存储判断是否跳转 import Vue from 'vue' import Router from ...
- vue2.0 实现导航守卫(路由守卫)---登录验证
路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards). 导航守卫 ...
- vue路由守卫+cookie实现页面跳转时验证用户是否登录----(二)设置路由守卫
上一篇我们已经封装好了cookie方法,登录成功之后也可以吧用户信息存到cookie中,接下来需要在router/index.js中引入一下cookie.js文件 然后继续添加以下代码 /* * be ...
- vue路由守卫用于登录验证权限拦截
vue路由守卫用于登录验证权限拦截 vue路由守卫 - 全局(router.beforeEach((to, from, next) =>来判断登录和路由跳转状态) 主要方法: to:进入到哪个路 ...
- vue路由守卫应用,监听是否登录
路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards). 导航守卫 ...
- vue全局路由守卫beforeEach+token验证+node
在后端安装jsonwebtoken npm i jsonwebtoken --save 在 login.js文件中引入 // 引入jwtconst jwt = require ...
- koa使用koa-passport实现路由进入前登录验证
现在的项目需求很简单,当进入一个页面的时候,如果没登录,则跳转到登录页面,如果登录了则直接到对应页面. koa2写的项目,使用koa-passport,koa-session,根据koa-passpo ...
- vue+element ui项目总结点(一)select、Cascader级联选择器、encodeURI、decodeURI转码解码、mockjs用法、路由懒加载三种方式
不多说上代码: <template> <div class="hello"> <h1>{{ msg }}</h1> <p> ...
随机推荐
- 从零开始实现放置游戏(十)——实现战斗挂机(1)hessian服务端搭建
前面实现RMS系统时,我们让其直接访问底层数据库.后面我们在idlewow-game模块实现游戏逻辑时,将不再直接访问底层数据,而是通过hessian服务暴露接口给表现层. 本章,我们先把hessia ...
- python数据库-mongoDB的高级查询操作(55)
一.MongoDB索引 为什么使用索引? 假设有一本书,你想看第六章第六节讲的是什么,你会怎么做,一般人肯定去看目录,找到这一节对应的页数,然后翻到这一页.这就是目录索引,帮助读者快速找到想要的章节. ...
- ~~核心编程(四):面向对象——单继承&复写~~
进击のpython 继承 继承的出现!就是一个作用! 为了节省代码! 为什么说节省代码? 你爸爸要是王健林 你是不是就不用愁怎么获得钱了? 为啥? 是不是钱已经有了! 直接拿来用就行了! 我们想一下奥 ...
- android_aidl
好久未更新博客了.人都是这样,刚开始对某一样东东冲劲十足,时间一长,很难坚持下去了,我这博客也是.所以我要打破成规,继续更新. 本次博客谈谈adil的用法.aidl的全称叫什么来着忘了,不过不要紧,重 ...
- STM32F072从零配置工程-建立工程文件
快速建立工程有两种方法: 第一种是通过官方提供的外设库来搭建,好处是使用库函数,而不需要深入研究寄存器配置: 第二种是通过STM32CubeMX,好处是直观快速,可以直接帮你配置好功能和时钟,不过使用 ...
- Java开发面试题汇总 -- 精选版(附答案)
最近事情太多,没太时间写公众号.今天抽空再整理整理面试中的那点事吧,帮助那些正在找工作或想跳槽找工作的兄弟姐妹们. 前面我己写过多篇推文,相信关注此公众号的伙伴们已经了解掌握了不少.从目前流行的开发技 ...
- 列表 元组 range
2019 年 7 月 9 日 列表---list------容器 列表:存储数据,支持多个数据类型,比如 :字符串 数字 布尔值 列表 集合 元组 特点 : 有序 可变 支持索引 (定义一个列表不 ...
- 个人永久性免费-Excel催化剂功能第43波-文本处理类函数增强
Excel的函数有400多个,真正常用的50多个,而常有的文本处理类函数也不多,不是因为文本类处理简单,而是Excel真的有点挤牙膏式的每个版本更新那么几个小函数,普通用户等得急切,但实际上这些小函数 ...
- C#7.0 新增功能
连载目录 [已更新最新开发文章,点击查看详细] C# 7.0 向 C# 语言添加了许多新功能 01 out 变量 支持 out 参数的现有语法已在此版本中得到改进. 现在可以在方法调用的参数列表 ...
- 每日一问:Android 消息机制,我有必要再讲一次!
坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 我 17 年的 面试系列,曾写过一篇名为:Android 面试(五):探 ...