在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 CSS修改学习第一章 查找位置
Feb 19 Javascript
jquery 滚动条事件简单实例
Jul 12 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
Nov 30 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
jQuery插件 Jqplot图表实例
Jun 18 Javascript
Jquery根据浏览器窗口改变调整大小的方法
Feb 07 Javascript
原生js实现旋转木马轮播图效果
Feb 27 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 Javascript
vue项目配置使用flow类型检查的步骤
Mar 18 Javascript
让IDE识别webpack的别名alias的实现方法
May 06 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
php max_execution_time执行时间问题
2011/07/17 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
2020/04/13 PHP
图片自动更新(说明)
2006/10/02 Javascript
用一段js程序来实现动画功能
2007/03/06 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
Jquery之Bind方法参数传递与接收的三种方法
2014/06/24 Javascript
javascript去除空格方法小结
2015/05/21 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
JS前向后瞻正则表达式定义与用法示例
2016/12/27 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
Vue实现手机计算器
2020/08/17 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
用Python实现随机森林算法的示例
2017/08/24 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
2018/01/07 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
python使用udp实现聊天器功能
2018/12/10 Python
python定时任务 sched模块用法实例
2019/11/04 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
年度优秀员工获奖感言
2014/08/15 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
入团申请书格式
2019/06/20 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python