Navigate to login page When auth token failed (#683)
fix #682
diff --git a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/interceptor/AuthInterceptor.java b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/interceptor/AuthInterceptor.java
index ac18432..98ddb47 100644
--- a/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/interceptor/AuthInterceptor.java
+++ b/dubbo-admin-server/src/main/java/org/apache/dubbo/admin/interceptor/AuthInterceptor.java
@@ -47,7 +47,7 @@
if (null != authority && authority.needLogin()) {
String authorization = request.getHeader("Authorization");
UserController.User user = UserController.tokenMap.get(authorization);
- if (null != user && System.currentTimeMillis() - user.getLastUpdateTime() <= 1000 * 60 * 15) {
+ if (null != user && System.currentTimeMillis() - user.getLastUpdateTime() <= 1000 * 60 * 60) {
user.setLastUpdateTime(System.currentTimeMillis());
return true;
}
diff --git a/dubbo-admin-ui/src/components/http-common.js b/dubbo-admin-ui/src/components/http-common.js
index 96890bf..00a3967 100644
--- a/dubbo-admin-ui/src/components/http-common.js
+++ b/dubbo-admin-ui/src/components/http-common.js
@@ -17,6 +17,8 @@
import axios from 'axios'
import Vue from 'vue'
import HttpStatus from 'http-status'
+import router from '@/router'
+import i18n from '@/lang'
let instance = axios.create({
baseURL: '/api/dev'
@@ -38,7 +40,8 @@
} else if (error.response.status === HttpStatus.UNAUTHORIZED) {
localStorage.removeItem('token')
localStorage.removeItem('username')
- Vue.prototype.$notify.error('Authorized failed,please login.')
+ Vue.prototype.$notify.error(i18n.t('authFailed'))
+ router.push({ path: 'login' })
} else if (error.response.status >= HttpStatus.BAD_REQUEST) {
Vue.prototype.$notify.error(error.response.data.message)
}
diff --git a/dubbo-admin-ui/src/lang/en.js b/dubbo-admin-ui/src/lang/en.js
index 9fecb4e..1e84461 100644
--- a/dubbo-admin-ui/src/lang/en.js
+++ b/dubbo-admin-ui/src/lang/en.js
@@ -195,5 +195,6 @@
unsupportedHtmlTypeTip: 'Temporarily unsupported form type',
none: 'none'
}
- }
+ },
+ authFailed:'Authorized failed,please login.'
}
diff --git a/dubbo-admin-ui/src/lang/zh.js b/dubbo-admin-ui/src/lang/zh.js
index 36c72e6..0b4407a 100644
--- a/dubbo-admin-ui/src/lang/zh.js
+++ b/dubbo-admin-ui/src/lang/zh.js
@@ -195,5 +195,6 @@
unsupportedHtmlTypeTip: '暂不支持的表单类型',
none: '无'
}
- }
+ },
+ authFailed:'权限验证失败'
}
diff --git a/dubbo-admin-ui/src/main.js b/dubbo-admin-ui/src/main.js
index 820ed0f..1ff8077 100644
--- a/dubbo-admin-ui/src/main.js
+++ b/dubbo-admin-ui/src/main.js
@@ -47,14 +47,6 @@
Vue.use(VueClipboard)
Vue.component('chart', ECharts)
-/* eslint-disable no-new */
-new Vue({
- router,
- store,
- i18n,
- render: h => h(App)
-}).$mount('#app')
-
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requireLogin)) {
if (localStorage.getItem('token')) {
@@ -69,3 +61,11 @@
next()
}
})
+
+/* eslint-disable no-new */
+new Vue({
+ router,
+ store,
+ i18n,
+ render: h => h(App)
+}).$mount('#app')
diff --git a/dubbo-admin-ui/vue.config.js b/dubbo-admin-ui/vue.config.js
index d61c31c..b4b6fa2 100644
--- a/dubbo-admin-ui/vue.config.js
+++ b/dubbo-admin-ui/vue.config.js
@@ -39,6 +39,7 @@
}
},
configureWebpack: {
+ devtool: process.env.NODE_ENV === 'dev' ? 'source-map' : undefined,
performance: {
hints: false
},