首页 > vuex+vue-router拦截

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 = falseconst 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: ''
})

在Login组件中进行登录和登出


ok,完美

转载于:https://www.cnblogs.com/haoluck/p/9226250.html

更多相关:

  • 数据分析过程中,我们经常可以看到提数的SQL语句,了解SQL常用的基础查询语句,是检验提数逻辑是否正确的途径之一,并且也能更方便使用SMART BI数据分析工具。今天就让小编带大家走进SQL基础查询的世界吧~1、查询单个字段:语法:SELECT 字段名 FROM 表名举例:SELECT first_name FROM employ...

  •   SELECT * FROM tableSELECT * FROM table WHERE name = '强哥'SELECT * FROM table ORDER BY updateTime DESC...

  • 使用 OpenRowSet 和 OpenDataSource 访问 Excel 97-2007 测试文件:D:97-2003.xls和D:2007.xlsx,两个文件的内容是一模一样的。 测试环境:SQL Server 2000 / 2005。 -------------------------------------------...

  • exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure SELECT * INTO tmp_asset FROM OPENROWSET('Microsof...

  • select b.*,(select count(a.id) from td_product a where a.protypeid=b.id) num from td_protype b 转载于:https://www.cnblogs.com/shanlin/archive/2011/09/27/2192725.html...