diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index a203ffe..2a202fd 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -169,6 +169,15 @@ const routes: RouteRecordRaw[] = [ layout: 'blank' } }, + { + path: '/auth/dingtalk/callback', + name: 'DingTalkCallback', + component: () => import('@/views/DingTalkCallback.vue'), + meta: { + title: '钉钉登录回调', + layout: 'blank' + } + }, { path: '/:pathMatch(.*)*', name: 'NotFound', @@ -194,10 +203,10 @@ router.beforeEach(async (to, from, next) => { const authStore = useAuthStore() const token = localStorage.getItem('token') - // 如果访问登录页 - if (to.path === '/login') { - // 如果已登录,跳转到首页 - if (token && authStore.isLoggedIn) { + // 如果访问登录页或回调页,允许访问 + if (to.path === '/login' || to.path === '/auth/dingtalk/callback') { + // 如果是登录页且已登录,跳转到首页 + if (to.path === '/login' && token && authStore.isLoggedIn) { next('/') return } diff --git a/frontend/src/views/DingTalkCallback.vue b/frontend/src/views/DingTalkCallback.vue new file mode 100644 index 0000000..f51eb2c --- /dev/null +++ b/frontend/src/views/DingTalkCallback.vue @@ -0,0 +1,141 @@ + + + + +