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 相关文章推荐
一个网马的tips实现分析
Nov 28 Javascript
javascript将浮点数转换成整数的三个方法
Jun 23 Javascript
JavaScript中用字面量创建对象介绍
Dec 31 Javascript
javascript文件加载管理简单实现方法
Jul 25 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
Dec 04 Javascript
JavaScript中ES6 Babel正确安装过程
Jul 18 Javascript
各式各样的导航条效果css3结合jquery代码实现
Sep 17 Javascript
ajax图片上传,图片异步上传,更新实例
Dec 30 Javascript
js 数组详细操作方法及解析合集
Jun 01 Javascript
Angular父子组件通过服务传参的示例方法
Oct 31 Javascript
webpack 静态资源集中输出的方法示例
Nov 09 Javascript
ant design vue导航菜单与路由配置操作
Oct 28 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
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
PHP中SESSION过期设置
2021/03/09 PHP
脚本收藏iframe
2006/07/21 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
nodejs教程之入门
2014/11/21 NodeJs
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
React如何避免重渲染
2018/04/10 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
vue实现评论列表功能
2019/10/25 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
师范生个人推荐信
2013/11/29 职场文书
幼儿园教师节活动方案
2014/02/02 职场文书
婚纱店策划方案
2014/05/22 职场文书
入党积极分子学习优秀共产党员先进事迹思想汇报
2014/09/13 职场文书
停电调休通知
2015/04/16 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL