Vue之beforeEach非登录不能访问的实现(代码亲测)


Posted in Javascript onJuly 18, 2019

后台的php请求就是接收这两个参数

login.vue

<template>
<div class=''>
  <input type="text" v-model="name" />
  <input type="password" v-model="password" />
  <button type="primary" @click="submitForm"><router-link :to="{path:'/'}">提交</router-link></button>
</div>
</template>

<script>
import axios from 'axios';
 export default {
  data(){
    return{
    name:'',
    password:'',
    }
  },
  methods:{
  submitForm:function(){
  var params = new URLSearchParams();
  params.append('name', this.name);
  params.append('password',this.password);
    axios({
    method: 'post',
    url: '/api/bbb.php',
    data:params
    }).then((resp)=>{
      sessionStorage.setItem('token',resp.status)// localStorage
      //以key value的形式将值存放到sessionStorage中。
      console.log(resp);
      }).catch((error)=>{
        console.log(error);
 })
   }
  }
 }
</script>

router

{
   path: '/',
   name: 'HelloWorld',
   component: HelloWorld,
   meta:{requireAuth:true}
  },

main.js

router.beforeEach((to, from, next) => {
 console.log(to);
 console.log(from);
 console.log( sessionStorage.getItem('token'))
 if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
  if(sessionStorage.getItem('token')){ //判断sessionStorage是否存在token
   alert("已经登录了")
   next();
  }else{
   //防止死循环
   alert("暂时未登录")
   if (to.path === '/login') {
    next();
    return
   }else{
     next({
     path: '/login',
   });
 }
  }
 }
 else {
  next();
 }
 /*如果本地 存在 token 则 不允许直接跳转到 登录页面*/
 if(to.fullPath == "/login"){
  if(localStorage.getItem('token')){
   next({
    path:from.fullPath
   });
  }else {
   next();
  }
 }
});

注意一定要在router实例前使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ie 调试javascript的工具
Apr 29 Javascript
通用javascript脚本函数库 方便开发
Oct 13 Javascript
jQuery之Deferred对象详解
Sep 04 Javascript
浅谈JSON.parse()和JSON.stringify()
Jul 14 Javascript
不用一句js代码初始化组件
Jan 27 Javascript
JS 动态判断PC和手机浏览器实现代码
Sep 21 Javascript
js实现数组和对象的深浅拷贝
Sep 30 Javascript
Vue常用指令详解分析
Aug 19 Javascript
vue-router重定向和路由别名的使用讲解
Jan 19 Javascript
vue-router命名视图的使用讲解
Jan 19 Javascript
JavaScript编写开发动态时钟
Jul 29 Javascript
JavaScript实现队列结构过程
Dec 06 Javascript
jquery实现下载图片功能
Jul 18 #jQuery
jQuery实现图片下载代码
Jul 18 #jQuery
使用react context 实现vue插槽slot功能
Jul 18 #Javascript
jquery图片预览插件实现方法详解
Jul 18 #jQuery
vue使用自定义指令实现拖拽
Jan 29 #Javascript
对TypeScript库进行单元测试的方法
Jul 18 #Javascript
基于JS实现数字动态变化显示效果附源码
Jul 18 #Javascript
You might like
php自动加载机制的深入分析
2013/06/08 PHP
深入掌握include_once与require_once的区别
2013/06/17 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
简单实现PHP留言板功能
2016/12/21 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
jquery实现简单的全选和反选功能
2016/01/02 Javascript
详解javascript new的运行机制
2016/01/26 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
AngularJS学习笔记之依赖注入详解
2016/05/16 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
JS对大量数据进行多重过滤的方法
2016/11/04 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
webpack入门必知必会
2017/01/16 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
Django 项目重命名的实现步骤解析
2019/08/14 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
Python while true实现爬虫定时任务
2020/06/08 Python
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
美国网上书店:Barnes & Noble
2018/08/15 全球购物
怎样创建、运行java程序
2014/08/01 面试题
后勤部长岗位职责
2013/12/14 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
乡镇党的群众路线对照检查材料
2014/09/24 职场文书
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS