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实现弹出层分享微博插件具备动画效果
Apr 03 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
Mar 05 Javascript
jquery实现动态改变div宽度和高度
May 08 Javascript
详解AngularJS中的依赖注入机制
Jun 17 Javascript
javascript父子页面通讯实例详解
Jul 17 Javascript
js转html实体的方法
Sep 27 Javascript
js实现HTML中Select二级联动的实例
Jan 05 Javascript
javascript实现小型区块链功能
Apr 03 Javascript
vue解决使用$http获取数据时报错的问题
Oct 30 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
Mar 10 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
Jul 17 Javascript
让JavaScript代码更加精简的方法技巧
Jun 01 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实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
读jQuery之八 包装事件对象
2011/06/21 Javascript
javascript版2048小游戏
2015/03/18 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
JS滚动到指定位置导航栏固定顶部
2017/07/03 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
20个常用Python运维库和模块
2018/02/12 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
python实现一个简单的并查集的示例代码
2018/03/19 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
解决Pymongo insert时会自动添加_id的问题
2020/12/05 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
英国高端食品和葡萄酒超市:Waitrose
2016/08/23 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
党员的自我评价范文
2014/01/02 职场文书
高二历史教学反思
2014/01/25 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
火灾现场处置方案
2014/05/28 职场文书
实验室标语
2014/06/21 职场文书
大专生自荐书范文
2014/06/22 职场文书
2014国庆节商场促销活动策划方案
2014/09/16 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
骨干教师个人总结
2015/02/11 职场文书
求职自我评价怎么写
2015/03/09 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
2015年科学教研组工作总结
2015/07/22 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python