Commit bd4dd2b6 authored by Breaker-93's avatar Breaker-93

免登配置及现场调试(路由前置守卫中处理);

parent 05f4ad55
# just a flag
ENV = 'development'
# base api 后端接口配置
VUE_APP_BASE_API = 'http://127.0.0.1:8081/'
VUE_APP_BASE_API2 = 'http://192.168.5.41'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
# It only does one thing by converting all import() to require().
# This configuration can significantly increase the speed of hot updates,
# when you have a large number of pages.
# Detail: https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
VUE_CLI_BABEL_TRANSPILE_MODULES = true
# 高德地图配置信息
VUE_APP_AMAP_KEY = '8be75819d3c27cf6597d26c0e7db34ce'
VUE_APP_AMAP_VERSION = '1.4.4'
# just a flag
ENV = 'production'
# base api 后端接口配置
VUE_APP_BASE_API = 'http://localhost/schedule/'
VUE_APP_BASE_API2 = 'http://192.168.5.41'
\ No newline at end of file
......@@ -7,10 +7,8 @@
</template>
<script>
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN'
import { AppDeviceEnquire } from '@/utils/mixin'
import { getUrlParam } from '@/utils/util'
import { getToken } from '@/api/mt'
import zhCN from 'ant-design-vue/lib/locale-provider/zh_CN';
import { AppDeviceEnquire } from '@/utils/mixin';
export default {
mixins: [AppDeviceEnquire],
data() {
......@@ -18,22 +16,6 @@
locale: zhCN
};
},
beforeCreate() {
const userCode = getUrlParam('userCode'),
corpId = getUrlParam('corpId'),
data = {
code: userCode
}
corpId && this.$ls.set('corpId', corpId)
userCode && this.$ls.set('userCode', userCode)
if (userCode) {
getToken(data).then(res => {
this.$ls.set('task_accessToken', res.access_token)
localStorage.setItem('task_accessToken', res.access_token)
this.$ls.set('task_refreshToken', res.refresh_token)
})
}
},
methods: {
}
};
......
......@@ -2,13 +2,20 @@
import { axios } from '@/utils/request';
const api = {
getToken: '/api/oauth/getTokenByCode'
getToken: '/api/oauth/getTokenByCode',
getUserId: '/api/contact/v1/account/get_my_info'
};
export function getToken(params) {
return axios({
url: api.getToken,
url: process.env.VUE_APP_BASE_API2 + api.getToken,
method: 'get',
params: params
});
}
export function getUserId() {
return axios({
url: process.env.VUE_APP_BASE_API2 + api.getUserId,
method: 'get'
});
}
......@@ -60,7 +60,7 @@
</template>
<script>
import { triggerWindowResizeEvent } from '@/utils/util';
import { triggerWindowResizeEvent, getUrlParam } from '@/utils/util';
import { mapState, mapActions } from 'vuex';
import { mixin, mixinDevice } from '@/utils/mixin';
import config from '@/config/defaultSettings';
......@@ -72,6 +72,8 @@ import SideMenu from '@/components/Menu/SideMenu';
import GlobalHeader from '@/components/GlobalHeader';
import GlobalFooter from '@/components/GlobalFooter';
import SettingDrawer from '@/components/SettingDrawer';
import { getToken, getUserId } from '@/api/mt';
;
export default {
name: 'BasicLayout',
......@@ -112,20 +114,26 @@ export default {
}
},
beforeRouteEnter(to, from, next) {
let count = 0,
// eslint-disable-next-line prefer-const
interval = setInterval(() => {
console.log(count)
count++
if (localStorage.getItem('task_accessToken')) {
clearInterval(interval)
next()
}
if (count > 5) {
clearInterval(interval)
next()
}
}, 100)
const userCode = getUrlParam('userCode');
const corpId = getUrlParam('corpId');
const data = {
code: userCode
};
corpId && sessionStorage.setItem('corpId', corpId);
userCode && sessionStorage.setItem('userCode', userCode);
if (userCode) {
getToken(data).then(res => {
localStorage.setItem('task_accessToken', res.data.access_token);
localStorage.setItem('task_refreshToken', res.data.refresh_token);
getUserId().then(res2 => {
sessionStorage.setItem('userId', res.data.id);
next();
});
});
} else {
alert('url中未找到userCode');
next();
}
},
created() {
// this.menus = this.mainMenu.find(item => item.path === '/').children
......
......@@ -4,46 +4,23 @@ import axios from 'axios';
import {
VueAxios
} from './axios';
// import notification from 'ant-design-vue/es/notification';
// import {
// ACCESS_TOKEN
// } from '@/store/mutation-types';
// 创建 axios 实例
// const service = axios.create({
// baseURL: 'http://192.168.2.241:8081', // api base_url
// headers: { 'clientType': 'app' }
// // baseURL: '/api/task/v1' // api base_url
// // baseURL: 'http://192.168.2.181:8081/'
// // baseURL: 'http://localhost:8081/'
// // timeout: 6000 // 请求超时时间
// });
// let refreshTokenState = false;
// // 刷新token的请求方法
// function getRefreshToken() {
// const params = {
// refreshToken: Vue.ls.get('task_refreshToken')
// };
// refreshTokenState = true;
// return service.get('/task/tb-user/refreshToken', params);
// }
const service = axios.create({
baseURL: 'http://192.168.2.241:8081' // api base_url
baseURL: process.env.VUE_APP_BASE_API, // api base_url
// baseURL: '/api/task/v1' // api base_url
// baseURL: 'http://192.168.2.181:8081/'
// baseURL: 'http://localhost:8081/'
// timeout: 6000 // 请求超时时间
timeout: 60000, // request timeout
headers: { 'clientType': 'app' }
});
let refreshTokenState = false;
// 刷新token的请求方法
function getRefreshToken() {
const params = {
refreshToken: Vue.ls.get('refreshToken')
refreshToken: localStorage.getItem('task_refreshToken')
};
return axios.get('http://192.168.5.41/api/task/v1/task/tb-user/refreshToken', {
params,
headers: { 'clientType': 'app' }
});
refreshTokenState = true;
// 注意!!!!!!!!最终生产环境,此处url的配置
return service.get(process.env.VUE_APP_BASE_API2 + '/task/tb-user/refreshToken', params);
}
const err = (error) => {
......@@ -74,7 +51,7 @@ const err = (error) => {
// request interceptor
service.interceptors.request.use(config => {
const accessToken = Vue.ls.get('task_accessToken');
const accessToken = localStorage.getItem('task_accessToken');
if (accessToken) {
config.headers['Authorization'] = 'Bearer ' + accessToken;
}
......@@ -85,27 +62,25 @@ service.interceptors.request.use(config => {
service.interceptors.response.use((response) => {
const res = response.data;
if (res.code && res.code !== 'M0000' && res.code !== 200) {
// const resConfig = response.config;
const resConfig = response.config;
// 如果 accessToken过期
// if (res.code === 'G_T_001' && !refreshTokenState) {
// // 刷新重新获取accessToken
// return getRefreshToken().then((res2) => {
// refreshTokenState = false;
// if (res2.code === 'M0000') {
// // 两个token 获取成功,继续完成被拦截的请求(因为该请求因token过期被拦截)
// Vue.ls.set('task_accessToken', res2.access_token);
// Vue.ls.set('task_refreshToken', res2.refresh_token);
// localStorage.setItem('task_accessToken', res2.access_token);
// resConfig.headers['Authorization'] = 'Bearer ' + res2.access_token;
// return service(resConfig);
// } else {
// alert('token过期且重新获取失败,请稍后重试!');
// }
// }
// );
// } else {
// alert(res.msg);
// }
if (res.code === 'G_T_001' && !refreshTokenState) {
// 刷新重新获取accessToken
return getRefreshToken().then((res2) => {
refreshTokenState = false;
if (res2.code === 'M0000') {
// 两个token 获取成功,继续完成被拦截的请求(因为该请求因token过期被拦截)
localStorage.setItem('task_accessToken', res2.access_token);
localStorage.setItem('task_refreshToken', res2.refresh_token);
resConfig.headers['Authorization'] = 'Bearer ' + res2.access_token;
return service(resConfig);
} else {
alert('token过期且重新获取失败,请稍后重试!');
}
});
} else {
alert(res.message);
}
return Promise.reject(res.message);
} else {
return res;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment