vue 权限认证token的实现方法


Posted in Javascript onJuly 17, 2018

最近搞一个vue的项目,接口带了权限验证,于是乎稍微研究了一下,中间遇到的各种坑都来源于自己概念的不熟悉。

主要呢是分两步:

一是vue路由层的控制,由于项目的路由有规律可循,所以没有采用网上requireAuth那种在需要加验证的路由上配置meta(具体见:https://3water.com/article/143928.htm)

import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)

const router = new Router({...})

router.beforeEach((to, from, next) => {
 if(/^\/[S|B|V]/.test(to.path)){
  if (isLogin()) {//判断token信息的自写方法
   next();
  }
  else {
   next({ name: 'login' })//跳转到登录页
  }
 }
 else {
  next();
 }
})

二是http 拦截器 ,统一处理所有http请求和响应,就得用上 axios 的拦截器。

import axios from 'axios'
// http request 拦截器
axios.interceptors.request.use(function (config) {
  config.headers.token = sessionStorage.getItem("user_token")//将接口返回的token信息配置到接口请求中
  return config;
}, function (error) {
  return Promise.reject(error);
});
// http response 拦截器
axios.interceptors.response.use(function(response){
  if(response.data.code=='1001'||response.data.code=='1002'){//具体的判断token失效的参数
    sessionStorage.setItem("user_token",'')
    sessionStorage.setItem("LoginUser",'{}')
    alert(response.data.msg);
    window.location.href='/#/login'//需求方要求一旦出错立即跳转登录,所以采取这种侵入式的手段。
  }else{
    return response
  }
}, function (error) {
  return Promise.reject(error);
});

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

Javascript 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
js jquery获取随机生成id的服务器控件的三种方法
Jul 11 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
浅谈javascript alert和confirm的美化
Dec 15 Javascript
JSON字符串和JSON对象相互转化实例详解
Jan 05 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
Vue实现动态创建和删除数据的方法
Mar 17 Javascript
Angular 容器部署的方法
Apr 17 Javascript
一步步教你利用Docker设置Node.js
Nov 20 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
微信小程序实现列表左右滑动
Nov 19 Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 #Javascript
详解webpack import()动态加载模块踩坑
Jul 17 #Javascript
vue-router中的hash和history两种模式的区别
Jul 17 #Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
Jul 17 #Javascript
SVG实现时钟效果
Jul 17 #Javascript
JS中实现隐藏部分姓名或者电话号码的代码
Jul 17 #Javascript
基于D3.js实现时钟效果
Jul 17 #Javascript
You might like
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
JavaScript实现选择框按比例拖拉缩放的方法
2015/08/04 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
CentOS6.5设置Django开发环境
2016/10/13 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
详解Python的三种可变参数
2019/05/08 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
使用Python实现 学生学籍管理系统
2019/11/26 Python
Python 实现取多维数组第n维的前几位
2019/11/26 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
毕业生在校学习的自我评价分享
2013/10/08 职场文书
物流仓管员工作职责
2014/01/06 职场文书
国培计划培训感言
2014/03/11 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
汇报材料怎么写
2014/12/30 职场文书
OpenCV中resize函数插值算法的实现过程(五种)
2021/06/05 Python
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
Python语言内置数据类型
2022/02/24 Python
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL
python区块链实现简版工作量证明
2022/05/25 Python