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 相关文章推荐
利用JavaScript实现新闻滚动效果(实例代码)
Nov 27 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
Mar 06 Javascript
javascript基本语法
May 31 Javascript
浅谈js基本数据类型和typeof
Aug 09 Javascript
canvas绘制七巧板
Feb 03 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
Sep 20 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 Javascript
layui从数据库中获取复选框的值并默认选中方法
Aug 15 Javascript
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
Oct 07 Javascript
vue中各种通信传值方式总结
Feb 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循环语句笔记(foreach,list)
2011/11/29 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
JavaScript中的其他对象
2008/01/16 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
JavaScript实现简单获取当前网页网址的方法
2015/11/09 Javascript
javascript中tostring()和valueof()的用法及两者的区别
2015/11/16 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
js数组去重的hash方法
2016/12/22 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
pandas dataframe添加表格框线输出的方法
2019/02/08 Python
解决pytorch GPU 计算过程中出现内存耗尽的问题
2019/08/19 Python
django框架单表操作之增删改实例分析
2019/12/16 Python
基于python实现模拟数据结构模型
2020/06/12 Python
高校学生干部的自我评价分享
2013/11/04 职场文书
违纪检讨书2000字
2014/02/08 职场文书
《问银河》教学反思
2014/02/19 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
团队口号大全
2014/06/06 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
医德医风自我评价2015
2015/03/03 职场文书
综合测评个人总结
2015/03/03 职场文书
工作态度检讨书范文
2015/05/06 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书