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 容错处理代码, 屏蔽错误信息
Mar 09 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
Dec 28 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
Jul 12 Javascript
用javascript关闭本窗口不弹出询问框的方法
Sep 12 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
Nov 03 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
Nov 18 Javascript
Vue+element-ui 实现表格的分页功能示例
Aug 18 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
JS实现水平遍历和嵌套递归操作示例
Aug 15 Javascript
three.js显示中文字体与tween应用详析
Jan 04 Javascript
浅析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生成图形验证码几种方法小结
2013/08/15 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
ie7+背景透明文字不透明超级简单的实现方法
2014/01/17 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
vue input标签通用指令校验的实现
2019/11/05 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
python 的列表遍历删除实现代码
2020/04/12 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
python学生管理系统代码实现
2020/04/05 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
2020/02/07 Python
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
大学毕业生通用自荐信范文
2013/10/31 职场文书
八一演出活动方案
2014/02/03 职场文书
追悼会主持词
2014/03/20 职场文书
教师见习期自我鉴定
2014/04/28 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书