在vue中获取token,并将token写进header的方法


Posted in Javascript onSeptember 26, 2018

需要准备的东西:Vue+axios+Vuex+Vue-router

1.在login.vue中通过发送http请求获取token

//根据api接口获取token
var url = this.HOST + "/session";
this.$axios.post(url, {
username: this.loginForm.username,
password: this.loginForm.pass
}).then(res => {
// console.log(res.data);
this.$message.success('登录成功');
let data = res.data;
//根据store中set_token方法将token保存至localStorage/sessionStorage中,data["Authentication-Token"],获取token的value值
this.$store.commit('set_token', data["Authentication-Token"]);
 
if (store.state.token) {
this.$router.push('/')
console.log(store.state.token)
} else {
this.$router.replace('/login');
}
 
}).catch(error => {
// this.$message.error(error.status)
this.loading = false
this.loginBtn = "登录"
this.$message.error('账号或密码错误');
// console.log(error)
 
})

2.在store.js中对token状态进行监管

import Vue from 'vue'
import Vuex from 'vuex'
 
 
Vue.use(Vuex)
 
export default new Vuex.Store({
state:{
token:''
},
mutations:{
set_token(state, token) {
state.token = token
sessionStorage.token = token
},
del_token(state) {
state.token = ''
sessionStorage.removeItem('token')
}
}
})

3.在router/index.js中

// 页面刷新时,重新赋值token
if (sessionStorage.getItem('token')) {
store.commit('set_token', sessionStorage.getItem('token'))
}
 
const router = new Router({
mode: "history",
routes
});
 
router.beforeEach((to, from, next) => {
if (to.matched.some(r => r.meta.requireAuth)) {   //这里的requireAuth为路由中定义的 meta:{requireAuth:true},意思为:该路由添加该字段,表示进入该路由需要登陆的
if (store.state.token) {
next();
}
else {
next({
path: '/login',
query: {redirect: to.fullPath}
})
}
}
else {
next();
}
})

4.在main.js中定义全局默认配置:

Axios.defaults.headers.common['Authentication-Token'] = store.state.token;

5.在src/main.js添加拦截器

// 添加请求拦截器
Axios.interceptors.request.use(config => {
// 在发送请求之前做些什么
//判断是否存在token,如果存在将每个页面header都添加token
if(store.state.token){
config.headers.common['Authentication-Token']=store.state.token
}
 
return config;
}, error => {
// 对请求错误做些什么
return Promise.reject(error);
});
 
// http response 拦截器
Axios.interceptors.response.use(
response => {
 
return response;
},
error => {
 
if (error.response) {
switch (error.response.status) {
case 401:
this.$store.commit('del_token');
router.replace({
path: '/login',
query: {redirect: router.currentRoute.fullPath}//登录成功后跳入浏览的当前页面
})
}
}
return Promise.reject(error.response.data)
});

以上这篇在vue中获取token,并将token写进header的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQery jstree 大数据量问题解决方法
Mar 09 Javascript
JS 去除Array中的null值示例代码
Nov 20 Javascript
简单的代码实现jquery定时器
Jan 03 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
js 自带的sort() 方法全面了解
Aug 16 Javascript
JavaScript实现url参数转成json形式
Sep 25 Javascript
js实现复选框的全选和取消全选效果
Jan 03 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
Mar 20 jQuery
vue-cli3环境变量与分环境打包的方法示例
Feb 18 Javascript
Vue使用NProgress进度条的方法
Sep 21 Javascript
vue配置nprogress实现页面顶部进度条
Sep 21 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 #Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
Sep 26 #Javascript
基于JavaScript实现一个简单的Vue
Sep 26 #Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 #Javascript
vue根据进入的路由进行原路返回的方法
Sep 26 #Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 #Javascript
Vue 配合eiement动态路由,权限验证的方法
Sep 26 #Javascript
You might like
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
JQuery打造PHP的AJAX表单提交实例
2009/11/03 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
Mongoose学习全面理解(推荐)
2017/01/21 Javascript
VUE 实现滚动监听 导航栏置顶的方法
2018/09/11 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
[56:18]VGJ.S vs Secret 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python基础语法(Python基础知识点)
2016/02/28 Python
Python的装饰器用法学习笔记
2016/06/24 Python
Python操作Access数据库基本步骤分析
2016/09/19 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
2019/11/08 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
计算机专业大学生的自我评价
2013/11/14 职场文书
资产评估专业学生的自我鉴定
2013/11/14 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
2014年计算机专业个人自我评价
2014/01/19 职场文书
创业大赛策划书
2014/03/01 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
团代会闭幕词
2015/01/28 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书