Vue中登录验证成功后保存token,并每次请求携带并验证token操作


Posted in Javascript onSeptember 08, 2020

在vue中,可以用**Storage(sessionStorage,localStorage)**来存储token,也可以用vuex来存储(但要考虑页面刷新数据消失问题,可以在vuex用Storage),

下面介绍用localStorage来存储:

在登录请求成功后,会返回一个token值,用loaclStorage保存

localStorage.setItem('token',res.data.token)

在main.js中设置全局请求头和响应回来的判断

//设置axios请求头加入token
Axios.interceptors.request.use(config => { 
 if (config.push === '/') { 
  } else { 
   if (localStorage.getItem('token')) { 
     //在请求头加入token,名字要和后端接收请求头的token名字一样 
     config.headers.token=localStorage.getItem('token');  
   } 
  } 
   return config; 
 }, 
 error => { 
  return Promise.reject(error);
 });

//=============================
//响应回来token是否过期
Axios.interceptors.response.use(response => { 
  console.log('响应回来:'+response.data.code) 
  //和后端token失效返回码约定403 
  if (response.data.code == 403) {
    // 引用elementui message提示框  
    ElementUI.Message({  
     message: '身份已失效', 
     type: 'err'  
     });
    //清除token 
    localStorage.removeItem('token ');
    //跳转  
    router.push({name: 'login'}); 
   } else { 
     return response 
   } 
  }, 
 error => { 
  return Promise.reject(error); 
  })

在router中的index设置全局守卫来判断是否存在token,不存在就返回登录页

router.beforeEach((to, from, next) => {
//to到哪儿 from从哪儿离开 next跳转 为空就是放行 
 if (to.path === '/') {
 //如果跳转为登录,就放行 
 next(); 
 } else {
 //取出localStorage判断
  let token = localStorage.getItem('token ');   
  if (token == null || token === '') { 
    console.log('请先登录')  
    next({name: 'login'});
   } else {
     next(); 
   } 
}});

补充知识:Vue获取并存储服务器返回的AuthorizationToken信息并给每次请求添加上token

由于后台是用jwt的token进行身份权限验证,后台在登录后把token添加响应头里,所以前台需要把这个token存放起来,并给每次请求的请求头添加上token,服务器才能获取token进行身份认证。

前台使用vue项目:

loging.vue(登录组件)

{
 submitForm(formName) {
 this.$axios
  .post('/api/admin/login', {
  userName: this.ruleForm.userName,
  password: this.ruleForm.password
  })
  .then(successResponse => {
  this.responseResult = JSON.stringify(successResponse.data)
  this.msg = JSON.stringify(successResponse.data.msg)
  if (successResponse.data.code === 200) {
  this.msg='';
  localStorage.setItem('userName',this.ruleForm.userName);
  //获取并存储服务器返回的AuthorizationToken信息
  var authorization=successResponse.headers['authorization'];
  localStorage.setItem('authorization',authorization);
  //登录成功跳转页面
  this.$router.push('/dashboard');
  
  }
  })
  .catch(failResponse => {})
 }
 }

main.js(全局配置js):

//自动给同一个vue项目的所有请求添加请求头
axios.interceptors.request.use(function (config) {
 let token = localStorage.getItem('authorization');
 if (token) {
 config.headers['Authorization'] = token;
 }
 return config;
})

这里还需要考虑token过期失效的问题,博主将会在后续另写博客补充。

以上这篇Vue中登录验证成功后保存token,并每次请求携带并验证token操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Js实现双击鼠标自动滚动屏幕的示例代码
Dec 14 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
May 23 Javascript
jquery缓动swing liner控制动画过程不同时刻的速度
May 29 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
Jul 28 Javascript
JavaScript设计模式之建造者模式介绍
Dec 28 Javascript
javascript函数式编程实例分析
Apr 25 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
Jan 31 Javascript
创建简单的node服务器实例(分享)
Jun 23 Javascript
解决js ajax同步请求造成浏览器假死的问题
Jan 18 Javascript
微信小程序自定义键盘 内部虚拟支付
Dec 20 Javascript
JavaScript实现轮播图特效
Apr 10 Javascript
Vue的过滤器你真了解吗
Feb 24 Vue.js
浅析JavaScript 函数柯里化
Sep 08 #Javascript
Vue.js使用axios动态获取response里的data数据操作
Sep 08 #Javascript
JavaScript 事件代理需要注意的地方
Sep 08 #Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 #Javascript
详解JavaScript的this指向和绑定
Sep 08 #Javascript
vue点击按钮实现简单页面的切换
Sep 08 #Javascript
Vue filter 过滤器、以及在table中的使用介绍
Sep 07 #Javascript
You might like
PHP 一个随机字符串生成代码
2010/05/26 PHP
destoon二次开发入门示例
2014/06/20 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
JS模拟多线程
2007/02/07 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
js代码实现轮播图
2020/05/04 Javascript
python实现查询IP地址所在地
2015/03/29 Python
用Python编写分析Python程序性能的工具的教程
2015/04/01 Python
总结Python编程中三条常用的技巧
2015/05/11 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
Python的Django框架中的表单处理示例
2015/07/17 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
带你认识Django
2019/01/15 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
CHARLES & KEITH加拿大官网:新加坡时尚品牌
2020/03/26 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
C#面试问题
2016/07/29 面试题
机关财务管理制度
2014/01/17 职场文书
团队口号大全
2014/06/06 职场文书
营销学习心得体会
2014/09/12 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
齐云山导游词
2015/02/06 职场文书