axios请求拦截、响应拦截,router导航守卫

axios请求拦截:可以在请求头统一添加token等

axios.interceptors.request.use(
  function (config) {
  //从vuex中获取用户信息
    let user = store.state.userForm;
    if (user) config.headers.Authorization = `Bearer ${user.token}`;
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
)

axios响应拦截:登录判断

//响应拦截:判断是否登录,
axios.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response;
}, function (error) {
  // 对响应错误做点什么,如果没登录则打回登录页
  Vue.prototype.$message.error('请先登录');
  router.push('/login');
  return Promise.reject(error);
});

导航前置守卫beforeEach:可以用来判断是否登录,但是最好用响应拦截

//to:去哪
//from:从哪来
//next:放行的方法,如果不传参表示的是想去哪就去哪,传参表示指定去哪
router.beforeEach((to,from,next)=>{
	if(to.path!= '/login') {
		let user = window.sessionStorage.getItem('user');
		if(user){
		//如果登录了就放行
			next();
		}else {
		//放行到login
			next('/login');
		}
	}else {
		next();
	}
})

导航后置守卫:afterEach

router.afterEach((to,from)=>{
})
  • beforeEach和afterEach是全局导航守卫,在router里面使用
  • beforeRouteLeave 是组件内的导航守卫,是在 离开该组件的对应路由时调用

你可能感兴趣的:(学习笔记,Vue.js)