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修改input的type属性及浏览器兼容问题探讨与解决
Jan 23 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
Apr 15 Javascript
AngularJS中的过滤器filter用法完全解析
Apr 22 Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 Javascript
谈谈JavaScript的New关键字
Aug 26 Javascript
浅谈javascript中的Function和Arguments
Aug 30 Javascript
js实现将json数组显示前台table中
Jan 10 Javascript
angularjs之$timeout指令详解
Jun 13 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
原生实现一个react-redux的代码示例
Jun 08 Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 Javascript
jQuery实现简易QQ聊天框
Feb 10 jQuery
浅析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中看实例学正则表达式
2006/12/25 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP实现小偷程序实例
2016/10/31 PHP
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
python实现的重启关机程序实例
2014/08/21 Python
python求列表交集的方法汇总
2014/11/10 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
Python AES加密实例解析
2018/01/18 Python
python读取文本中的坐标方法
2018/10/14 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python3实现逐字输出的方法
2019/01/23 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python数组循环处理方法
2019/08/26 Python
tensorflow中tf.slice和tf.gather切片函数的使用
2020/01/19 Python
Python修改列表值问题解决方案
2020/03/06 Python
Python自省及反射原理实例详解
2020/07/06 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
日本高端护肤品牌:Tatcha
2016/08/29 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
有创意的广告词
2014/03/18 职场文书
优秀纪检干部材料
2014/08/27 职场文书
债务纠纷委托书
2014/08/30 职场文书
五四演讲稿范文
2014/09/03 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
2015年安全生产责任书
2015/01/30 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
酒会开场白大全
2015/06/01 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
2019年农民幸福观调查的实践感悟
2019/12/19 职场文书