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活用事件触发对象动作
Aug 10 Javascript
元素绑定click点击事件方法
Jun 08 Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
AngularJS指令与控制器之间的交互功能示例
Dec 14 Javascript
js实现一键复制功能
Mar 16 Javascript
详解Vue中状态管理Vuex
May 11 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
Aug 02 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
Apr 15 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 Javascript
vue+Element-ui实现登录注册表单
Nov 17 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初学者(入门学习经验谈)
2010/10/12 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
PHP实现更新中间关联表数据的两种方法
2014/09/01 PHP
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
Vue.js学习示例分享
2017/02/05 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
基于复选框demo(分享)
2017/09/27 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
React key值的作用和使用详解
2018/08/23 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
python xlsxwriter创建excel图表的方法
2018/06/11 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
10张动图学会python循环与递归问题
2021/02/06 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
CSS3动画和HTML5新特性详解
2020/08/31 HTML / CSS
《恐龙》教学反思
2014/04/27 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
责任书格式范文
2014/07/28 职场文书
继承公证书格式
2015/01/26 职场文书
热血教师观后感
2015/06/10 职场文书
创业计划书之服装
2019/10/07 职场文书
基于Python实现对比Exce的工具
2022/04/07 Python
Go gorilla/sessions库安装使用
2022/08/14 Golang