123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /**
- * axios全局配置
- */
- import axios from "axios";
- import config from '@/config/index';
- // import store from "../store"
- // import router from "../router"
- import Vue from "vue";
- import { Message } from "element-ui";
- import Cookies from "js-cookie";
- let loseToken = false,
- serverError = false;
- /**
- * baseUrl
- */
- function getUrl() {
- return 'https://park.lhzhtc.cn';
- }
- /**
- * baseUrl
- */
- function getTokenUrl() {
- return Vue.prototype.tokenUrl;
- }
- axios.defaults.timeout = 30000;
- axios.defaults.withCredentials = false; //配置为false
- /**
- * 超时设置
- */
- const service = axios.create({
- // baseURL: process.env.NODE_ENV === "production" ? getUrl() : "",
- baseURL: getUrl(),
- timeout: 30000 // 请求超时时间
- });
- //刷新token
- async function refreshToken() {
- let tokenUrl = getTokenUrl();
- let url = `${tokenUrl}/cas/jwt/token`;
- await axios.get(url).then(
- response => {
- console.log(response.data);
- if (response.data.status === true) {
- Cookies.set("jwtToken", response.data.jwtToken, {
- expires: 7,
- path: "/"
- });
- }
- },
- error => {
- console.log("错误", error.message);
- }
- );
- }
- //检查token有效期
- // function check() {
- // const token = Cookies.get("jwtToken")
- // if (!token) {
- // return false
- // }
- // let infostr = token.substring(token.indexOf(".") + 1, token.lastIndexOf("."))
- // let Base64 = require("js-base64").Base64
- // let info = Base64.decode(infostr)
- // //解析token为对象json
- // let infoObject = JSON.parse(info)
- // //当前时间戳
- // let current = new Date().getTime() / 1000
- // //当有效期过期时需要删除本地的token以及续签token
- // if (infoObject.exp < current) {
- // Cookies.set("jwtToken", null, { expires: 0 })
- // return false
- // } else if (infoObject.exp - current < 60 * 30) {
- // //当有效期还剩半小时过期时主动更新token
- // refreshToken()
- // }
- // return true
- // }
- // http request 拦截器
- // 每次请求都为http头增加Authorization字段,其内容为token
- service.interceptors.request.use(
- config => {
- config.url = getUrl() + config.url;
- //config.baseURL = getUrl()
- // if (check()) {
- // 判断是否存在token,如果存在的话,则每个http header都加上token
- const token = Cookies.get("jwtToken");
- // config.headers.Authorization = token
- // }
- return config;
- },
- err => {
- return Promise.reject(err);
- }
- );
- // http response 拦截器
- // 针对响应代码确认跳转到对应页面
- service.interceptors.response.use(
- response => {
- //token失效拦截
- if (response.data.code == 1001) {
- //访问后场失败:1001 token失效
- //清空token
- //清空首页的vuex的state
- // store.commit("user/setIsLogin", false)
- // store.commit("user/setAcctInfo", {})
- //跳转到首页
- //router.push('/home');
- if (!loseToken) {
- Message({
- message: "登录账号已过期或无访问权限,请重新登录",
- type: "error",
- showClose: true
- });
- }
- loseToken = true;
- setTimeout(() => {
- loseToken = false;
- }, 5000);
- top.location = 'https://park.lhzhtc.cn/SaaS-Platform';
- return Promise.reject(response);
- }
- //业务异常拦截 (code8)
- else if (response.data.code == 8) {
- Message({
- message: `${response.data.msg}`,
- type: "warning",
- showClose: true
- });
- return Promise.reject(response);
- }
- //运行时异常拦截 (不显示具体信息)
- else if (response.data.code == 9) {
- Message({
- message: "系统内部错误,请联系管理员或稍后重试",
- type: "error",
- showClose: true
- });
- return Promise.reject(response);
- }
- return Promise.resolve(response.data);
- },
- error => {
- if (
- error.code == "ECONNABORTED" ||
- error.message.indexOf("timeout") != -1
- ) {
- ("请求超时");
- }
- if (!serverError) {
- Message({
- message: `连接服务器错误:${error.message}`,
- type: "error",
- showClose: true
- });
- }
- serverError = true;
- setTimeout(() => {
- serverError = false;
- }, 5000);
- return Promise.reject(error); // 返回接口返回的错误信息
- }
- );
- export default service;
|