栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Vue.js

vue路由守卫+登录态管理

Vue.js 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

vue路由守卫+登录态管理

在路由文件需要守卫的path后面加上meta

{path: '/home',component: home,meta:{requireAuth:true}}

在main.js里面加上

//路由守卫router.beforeEach((to, from, next) => {  console.log(to);  console.log(from);  if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
    if(JSON.parse(localStorage.getItem('islogin'))){ //判断本地是否存在access_token
      next();
    }else {
      next({        path:'/login'
      })
    }
  }  else {
    next();
  }  
  if(to.fullPath == "/login"){    if(JSON.parse(localStorage.getItem('islogin'))){
      next({        path:from.fullPath
      });
    }else {
      next();
    }
  }
});

其中islogin是登录态,就是true or false,true表示登录,false表示未登录,存放在localStorage里面,因为localStorage里面只能存字符串,所以存进去的时候需要localStorage.setItem('islogin',JSON.stringify(islogin));将islogin变为String类型,取出来的时候需要将islogin转化为Boolean类型,就比如JSON.parse(localStorage.getItem('islogin'))这样。
那么还有一个问题,就是islogin登录态的管理,vue不能实时监测localStorage的变化,需要实时监测islogin的变化来在页面显示登录还是已经登录,我用的是vuex+localStorage来管理islogin。展示部分代码

//store.js中import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({  state:{    //是否登录判断
    islogin:''
  },  mutations:{    login:(state,n) => {    //传入登录状态islogin
    let islogin = JSON.parse(n);
    localStorage.setItem('islogin',JSON.stringify(islogin));    console.log(islogin);
    state.islogin = islogin;
    }
  }
}

在需要改变登录态的页面只要触发上面这个login方法就可以了

//这里是登录login() {    let flag = true;    this.$store.commit('login',flag);    this.$router.push("/home");    console.log("登录成功");
}//这里是退出登录exit() {    let flag = false;    this.$store.commit('login',flag);    this.$router.push("/login");    console.log("退出登录");
}



作者:前端来入坑
链接:https://www.jianshu.com/p/6c2048884066


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/240652.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号