vuex+vue-router拦截
干就完了
项目中经常遇到这样一个场景,用户信息或者进行增删改的一些模块,需要根据用户是否登录,进行路由拦截,直接上代码
在store文件夹下的store.js中存放一个默认登录状态
/*
* store.js
* */
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const state = {
user: false,
todos: []
}
const mutations = {
//登录
login(state,user){
state.user = user
},
//退出
logout(state,user){
state.user = false
}
}
export default new Vuex.Store({
state,
mutations
})
在main.js中进行配置
import Vue from 'vue'
import App from './App'
import VueRouter from 'vue-router'
import store from './store/store'
Vue.use(VueRouter)
Vue.config.productionTip = false
const router = new VueRouter({
mode:'history',
routes:[
{
path:'/',
component:(resolve) => {
require(['./components/Home'],resolve)
}
},{
path:'/login',
name:'login',
component:resolve => require(['./components/Login'],resolve)
},{
path:'/contact',
name:'contact',
// 需要登录才能进入的页面可以增加一个meta属性
meta:{
requireAuth: true
},
component:resolve => require(['./components/Contact'],resolve)
},{
path:'*',
component:resolve => require(['./components/Error'],resolve)
}
]
})
router.beforeEach((to, from, next) => {
// 判断是否需要登录权限
if(to.matched.some(res => res.meta.requireAuth)){
if(!store.state.user && to.matched.some(function (item) { return item.path == '/contact' })){
next('/login')
}else{
next()
}
}else{
next()
}
})
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
在Login组件中进行登录和登出
<template>
<div id="login">
<button @click="loginIn">登录</button>
<button @click="loginOut">登出</button>
</div>
</template>
<script>
import store from '../store/store'
export default({
name:'login',
store,
methods:{
loginIn(){
store.commit('login',true);
},
loginOut(){
store.commit('logout',false);
}
}
})
</script>
ok,完美
vuex+vue-router拦截的更多相关文章
- vue router拦截器的简单使用
之前,为了实现router跳转的每个页面的url上都带上addressCode,然后用了一下router拦截器,很好用,当然也可以专门封装一个方法来实现(跳转的页面上带有addressCode),不过 ...
- Vue router拦截 如果用户并未登录直接跳转到登录界面(最简单的cookie演示)
router.beforeEach(function(to,from,next){ console.log('路由拦截') console.log(to.name) console.log(from. ...
- python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)
昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...
- Vue 2.0 + Vue Router + Vuex
用 Vue.js 2.x 与相配套的 Vue Router.Vuex 搭建了一个最基本的后台管理系统的骨架. 当然先要安装 node.js(包括了 npm).vue-cli 项目结构如图所示: ass ...
- 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI
一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...
- Vue3: 如何以 Vite 创建,以 Vue Router, Vuex, Ant Design 开始应用
本文代码: https://github.com/ikuokuo/start-vue3 在线演示: https://ikuokuo.github.io/start-vue3/ Vite 创建 Vue ...
- vue router.beforeEach(),详解
outer.beforeEach()一般用来做一些进入页面的限制. 比如没有登录, 就不能进入某些页面,只有登录了之后才有权限查看某些页面...说白了就是路由拦截.第一步 规定进入路由需不需要权限 @ ...
- vue 路由拦截、axios请求拦截
路由拦截 项目中,有些页面需要登录后才能进入,例如,在某页面A,用户在操作前需要先进入登录页(此时需要将上一页的地址(/survey/start)作为query存入login页面的地址中,如: htt ...
- 【mock】后端不来过夜半,闲敲mock落灯花 (mockjs+Vuex+Vue实战)
mock的由来[假] 赵师秀:南宋时期的一位前端工程师 诗词背景:在一个梅雨纷纷的夜晚,正处于项目编码阶段,书童却带来消息:写后端的李秀才在几个时辰前就赶往临安度假去了,!此时手头仅有一个简单 ...
- Vue Router路由守卫妙用:异步获取数据成功后再进行路由跳转并传递数据,失败则不进行跳转
问题引入 试想这样一个业务场景: 在用户输入数据,点击提交按钮后,这时发起了ajax请求,如果请求成功, 则跳转到详情页面并展示详情数据,失败则不跳转到详情页面,只是在当前页面给出错误消息. 难点所在 ...
随机推荐
- 【卷土重来之C#学习笔记】(二)c#编程概述
(1)开始C#,一个简单的程序Hello Word 开始 using System; //使用了System的命名空间 using System.Collections.Generic; us ...
- 【Linux相识相知】rpm包管理
我们日常在使用Windows的时候,如果要安装某个软件,最简单的方法就是在程序包的官网直接下载软件包到本地,一般是以.exe或者.msi格式的文件,然后一直下一步下一步就能安装成功了,但是在使用lin ...
- C#博客记录一
前言:C#语言是由微软公司开发面向大众的一款软件开发语言. 1.c语音的输出语句为Console.Write();和Console.WriteLine(); 两者区别为后者为换行输出,前者不换行. 2 ...
- Nginx反向代理、负载均衡功能
环境: [root@db02 ~]# uname -a Linux db02 -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 x86_64 GNU/Li ...
- vscode设置语言
按 ctrl+shift+p 中文设置成英文输入 “配置语言” 打开locale.json 设置 "locale":"en" 英文设置成中文输入 &qu ...
- Git代码merge
Git代码合并遇到如下问题: <<<<<<< HEAD client.post(url, secretKey, function (data, res ...
- 关于IQueryable和IEnumerable
园里对这两个已经有很多文章作了深入的介绍,我总结些,当成笔记用. 一.具体判断用哪个上,如果是运行在本地内存中的,用IEnumerable,枚举该对象时,会立即反应查询结果. 如果是远程数据源,比如数 ...
- 02.switch的使用
基本语法: switch-case语法: switch(表达式/变量) { case 值1: 语句块1; break; case 值2: 语句块2; break; default:语句块3; brea ...
- net2.0实现net3.5特性,如扩展方法,Linq等
差不多两年没碰net了,今天想做个小工具,于是打开了久违的VS2012,由于客户终端还是winxp时代,而且是net2.0,且升级存在限制,因此必需在2.0下开发,之前的常用库是3.5写的,而且因为3 ...
- poi学习
需要节点 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</a ...