在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 相关文章推荐
JavaScript Event学习第九章 鼠标事件
Feb 08 Javascript
jquery tab插件制作实现代码
Jun 22 Javascript
window.dialogArguments 使用说明
Apr 11 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
jQuery实现购物车多物品数量的加减+总价计算
Jun 06 Javascript
JS中处理时间之setUTCMinutes()方法的使用
Jun 12 Javascript
javascript DIV实现跟随鼠标移动
Mar 19 Javascript
在Html中使用Requirejs进行模块化开发实例详解
Apr 15 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
Nov 16 Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
Oct 11 Javascript
js实现滑动进度条效果
Aug 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
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
为数据添加append,remove功能
2006/10/03 Javascript
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
Python 文件管理实例详解
2015/11/10 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
浅析Python函数式编程
2018/10/06 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
python使用建议与技巧分享(一)
2020/08/17 Python
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
办公室经理岗位职责
2014/01/01 职场文书
运动会广播稿150字
2014/02/19 职场文书
个人综合鉴定材料
2014/05/23 职场文书
领导干部对照检查材料
2014/08/24 职场文书
优秀教师申报材料
2014/12/16 职场文书
银行服务理念口号
2015/12/25 职场文书
家长必看:义务教育,不得以面试 评测等名义选拔学生
2019/07/09 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电
小程序自定义轮播图圆点组件
2022/06/25 Javascript