• Vue+axios 实现http拦截及路由拦截


    /**

    * http配置
    */

    import axios from 'axios';
    import Cookies from 'js-cookie';
    
    //http request 拦截器
    axios.interceptors.request.use(
        (config) => {
            // console.log('config', config.url);
            if (Cookies.get('sessionId') && config.url != 'http://xxx.xxx.xxx/exit' && config.url != 'http://xxx.xxx.xxx/exit' && config.url != 'https://xxx.xxx.xxx/exit') {
                let token = "token " + Cookies.get('sessionId')
                config.headers.Authorization = token;
            }
            return config;
        },
        (error) => {
            // console.log('request-error', error);
            return Promise.reject(error);
        }
    );
    //http response 拦截器
    axios.interceptors.response.use(
        (response) => {
            // console.log('response', response);
            return response;
        },
        (error) => {
            //如果响应器状态码为401,跳转到登录页if (error.response.status == 401) {
                router.push('/login');
            }
            return Promise.reject(error);
        }
    )

    路由全局拦截

    import Vue from 'vue'
    import Router from 'vue-router'
    import store from '../store'
    import login from '../views/login/login'
    import index from '../views/index/index'
    import course from '../views/course/course'
    import play from '../views/play/play'
    import playInfo from '../views/play/play-info'
    import managerClient from './manager_client.js'
    Vue.use(Router)
    const routes = [{
        path: '/login',
        name: 'login',
        component: login,
    }, {
        path: '/',
        name: 'index',
        component: index,
    }, {
        path: '/course',
        name: 'course',
        component: course,
    }, {
        path: '/play',
        name: 'play',
        component: play,
    }, {
        path: '/play-info',
        name: 'play-info',
        component: playInfo,
    }, ...managerClient]
    const router = new Router({
        mode: 'hash',
        routes: routes
    });
    //全局拦截器
    router.beforeEach((to, from, next) => {
        console.log('to', to);
        console.log('from', from);
        if (to.path == '/controll' || to.path == '/editControll') {
         //判断vuex是否存在 console.log(
    'this.$store.state.user.isAdmin', store.state.user); if (store.state.user) { if (store.state.user.isAdmin) { next() } else { next(false) } } else { next(false) } } else { next() } }) export default router

     首先我们要明白设置拦截器的目的是什么,当我们需要统一处理http请求和响应时我们通过设置拦截器方便处理,路由拦截可以禁止用户手动进入那些需要权限的页面

  • 相关阅读:
    Shell脚本sed命令
    Shell脚本常用unix命令
    Shell的case语句
    3.5.2 数值之间的转换
    3.5.1 数学函数与常量
    3.5 运算符
    3.4.2 常量
    3.4.1 变量初始化
    3.4 变量
    Python异常捕捉的一个小问题
  • 原文地址:https://www.cnblogs.com/mei1234/p/10452508.html
Copyright © 2020-2023  润新知