zoukankan      html  css  js  c++  java
  • vue中token丢失弹出登录窗口

    用 axios response 拦截器,我们统一处理所有请求成功之后响应过来的数据,然后对特殊数据进行处理,其他的正常分发。

    安装axios :npm i axios

    在 main.js 注册 axios

    // http 请求拦截器
    axios.interceptors.request.use(
    config => {
    if (VueCookies.isKey("token")) {
    config.headers.common["token"] = VueCookies.get("token");
    config.headers["Cache-Control"] = "no-store"; //清除浏览器缓存
    config.headers["Pragma"] = "no-cache"; //清除浏览器缓存
    store.commit("changeLogin", true);
    }
    return config;
    },
    err => {
    return Promise.reject(err);
    }
    );

    // http 响应 拦截器
    axios.interceptors.response.use(
    response => {
    if (response.data.code === "-3") {
    store.commit("changePop", true);
    }
    if (response.data.code === "401") {
    router.go(-1);
    Message.error(response.data.msg);
    } else if (response.data.code == "200") {
    return Promise.resolve(response);
    } else if (response.data.code == "NOT_LOGIN") {
    Message.error(response.data.msg);
    store.commit("changePop", true);
    } else if (response.data.code == "400") {
    return Promise.resolve(response);
    } else {
    Message.error(response.data.msg);
    return Promise.reject(response);
    }
    },
    error => {
    if (error.response) {
    Message.error("服务器连接失败");
    }
    return Promise.reject(error.response.data);
    // 返回接口返回的错误信息
    }
    );

    红色部分为全局变量 

    import Vue from "vue";
    import Vuex from "vuex";

    Vue.use(Vuex);

    const state = {
    token: "",
    iflogin: false,
    ifpop: false
    };
    const mutations = {
    changeToken(state, str) {
    state.token = str;
    window.sessionStorage.setItem("token", str);
    },
    changeLogin(state, str) {
    state.iflogin = str;
    window.sessionStorage.setItem("iflogin", str);
    },
    changePop(state, str) {
    state.ifpop = str;
    },
    };
    const actions = {

    };
    const store = new Vuex.Store({
    state: state,
    mutations: mutations,
    actions: actions
    });

    export default store;

    登录窗口

    <el-dialog
    title
    :visible.sync="ifLoginShow"
    :close-on-click-modal="false"
    :before-close="handleDialogClose"
    width="30%"
    center
    > </el-dialog>

    ifLoginShow() {
    return this.$store.state.ifpop;
    },

  • 相关阅读:
    外观模式
    装饰器模式
    eclipse在运行main方法时在console里面报内存溢出的错误解决办法
    windows7安装node
    Eclipse-低版本离线集成svn步骤
    IDEA-JetBrains产品永久破解
    Java对字符串使用MD5进行加密(亲测有效)
    windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)
    在linux中运行main方法所在的java类(亲测有效!!!)
    linux常用命令
  • 原文地址:https://www.cnblogs.com/yyjspace/p/11736551.html
Copyright © 2011-2022 走看看