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 相关文章推荐
jquery 学习之二 属性(html()与html(val))
Nov 25 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 Javascript
jquery实现动静态条形统计图
Aug 17 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
vue.js 获取当前自定义属性值
Jun 01 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
深入浅析JavaScript中的RegExp对象
Sep 18 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
vue中实现滚动加载更多的示例
Nov 08 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 Javascript
js实现随机点名
Jan 19 Javascript
详解CocosCreator项目结构机制
Apr 14 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中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
基于php和mysql的简单的dao类实现crud操作功能
2014/01/27 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP 实现链式操作
2021/03/09 PHP
actionscript与javascript的区别
2011/05/25 Javascript
基于JQuery实现的Select级联
2014/01/27 Javascript
jQuery功能函数详解
2015/02/01 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
js倒计时抢购实例
2015/12/20 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
如何选择jQuery版本 1.x? 2.x? 3.x?
2017/04/01 jQuery
javascript简单链式调用案例分析
2017/05/10 Javascript
Vue-cli3多页面配置详解
2020/03/22 Javascript
Python的另外几种语言实现
2015/01/29 Python
python 全文检索引擎详解
2017/04/25 Python
python通过zabbix api获取主机
2018/09/17 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
Gretna Green中文官网:苏格兰格林小镇
2019/10/16 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
什么是方法的重载
2013/06/24 面试题
学生实习自我鉴定
2013/10/11 职场文书
男方父母证婚词
2014/01/12 职场文书
家长对小学生的评语
2014/01/28 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
2019感恩宣传标语!
2019/07/05 职场文书