干就完了

项目中经常遇到这样一个场景,用户信息或者进行增删改的一些模块,需要根据用户是否登录,进行路由拦截,直接上代码

在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,完美

最新文章

  1. 【.NET深呼吸】基于异步上下文的本地变量(AsyncLocal)
  2. VS2010+VMWare8+VisualDDK1.5.6 创建并调试你的第一个驱动程序 - 完全教程
  3. (2015年郑州轻工业学院ACM校赛题) G 矩阵
  4. Excel连接字符串(Oledb)
  5. LANMP 一键下载
  6. Django Web开发【3】创建网络收藏夹
  7. PHP学习笔记5-类的继承/方法重写
  8. 百度地图JavaScript API使用
  9. [数据结构]C语言二叉树的实现
  10. 【mysql】mysql密码设置和更改
  11. (转)Android 仿订单出票效果 (附DEMO)
  12. Core官方DI解析(4)--CallSiteRuntimeResolver
  13. Spring Boot 2.x 学习专栏
  14. pandas功能使用rename, reindex, set_index 详解
  15. 【转帖】Systemd 入门教程:命令篇
  16. 瞅瞅!!免费看VIP视频的技巧
  17. SpringBoot学习(一)——Spring的发展
  18. AWS 使用经验
  19. word自动导入目录
  20. 【译】Serverless架构 - 3

热门文章

  1. 18 Command Line Tools to Monitor Linux Performance
  2. FZU 1884——排火车——————【栈的模拟】
  3. C# HashTable 使用用法详解
  4. Java线程同步打印ABC
  5. SVM个人学习总结
  6. 2015年创新工场校园招聘软件研发岗位笔试题目&mdash;&mdash;矩阵旋转
  7. ERP设计之系统基础管理(BS)-日志模块设计(转载)
  8. Android 马甲包制作流程
  9. Struts1.x 中处理乱码及通过标签显示数据
  10. Python 进程线程协程 GIL 闭包 与高阶函数(五)