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实现的真正的iframe高度自适应(兼容IE,FF,Opera)
Mar 07 Javascript
基于jquery的给文章加入关键字链接
Oct 26 Javascript
Extjs显示从数据库取出时间转换JSON后的出现问题
Nov 20 Javascript
Jquery 动态生成表格示例代码
Dec 24 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
Aug 21 Javascript
详解使用webpack构建多页面应用
Dec 21 Javascript
Vue全局分页组件的实现代码
Aug 10 Javascript
JS 音频可视化插件Wavesurfer.js的使用教程
Oct 31 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
JavaScript常用内置对象用法分析
Jul 09 Javascript
JS+canvas五子棋人机对战实现步骤详解
Jun 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设计模式 Visitor 访问者模式
2011/06/28 PHP
PHP set_error_handler()函数使用详解(示例)
2013/11/12 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
destoon之一键登录设置
2014/06/21 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
innerHTML,outerHTML,innerTEXT三者之间的区别
2007/01/28 Javascript
再谈ie和firefox下的document.all属性
2009/10/21 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
jquery.validate提示错误信息位置方法
2016/01/22 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
JS重载实现方法分析
2016/12/16 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
教你用Python创建微信聊天机器人
2020/03/31 Python
Python实现的建造者模式示例
2018/08/06 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
2019/10/24 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
Python基于network模块制作电影人物关系图
2020/06/19 Python
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
室内设计实习自我鉴定
2013/09/25 职场文书
考试不及格的检讨书
2014/01/22 职场文书
四年级数学教学反思
2016/02/16 职场文书
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
JavaScript事件的委托(代理)的用法示例详解
2022/02/18 Javascript
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python