huiqi il y a 3 mois
Parent
commit
b24603424e

+ 8 - 1
src/apis/index.ts

@@ -123,6 +123,7 @@ export type FetchAuditConfigLibListApiParams = {
 };
 
 // Api函数类型
+export type CheckTokenApi = (token: string) => Promise<any>;
 export type JkLoginApi = (data: JkLoginApiParams) => Promise<any>;
 export type LoginApi = (data: LoginApiParams) => Promise<any>;
 export type LogoutApi = () => Promise<any>;
@@ -182,6 +183,11 @@ export type ModifyTakaiAuditDocumentLibApi = (id: string, data: ModifyDocumentAp
 export type AuditTakaiApplicationApi = (appId: string, userId: string) => Promise<any>;
 export type FetchTakaiProjectApi = () => Promise<any>;
 
+// token联登校验
+const checkTokenApi: CheckTokenApi = async (token) => {
+    return api.get(`/checkToken/${token}` );
+};
+
 // 建科登录
 const jkloginApi: JkLoginApi = async (data) => {
     return api.post('/jk_code_login', data);
@@ -469,6 +475,7 @@ const fetchTakaiProjectApi: FetchTakaiProjectApi = async () => {
 };
 
 export const apis = {
+    checkToken: checkTokenApi,
     jklogin: jkloginApi,
     login: loginApi,
     logout: logoutApi,
@@ -527,4 +534,4 @@ export const apis = {
     modifyTakaiAuditDocumentLibApi: modifyTakaiAuditDocumentApi,
     auditTakaiApplicationLibApi: auditTakaiApplicationApi,
     fetchTakaiProjectLibApi: fetchTakaiProjectApi,
-};
+};

+ 1 - 0
src/pages/deepseek/questionAnswer/info/index.tsx

@@ -412,6 +412,7 @@ const QuestionAnswerInfo: React.FC = () => {
                     form={form}
                     layout='vertical'
                     initialValues={{
+                        isDeepThink: false,
                         max_token: 1024
                     }}
                 >

+ 8 - 8
src/pages/login/store.tsx

@@ -31,13 +31,6 @@ const useLoginStore = (): LoginStore => {
             try {
                 const res = await apis.login(data);
                 const info = res.data;
-                // 首次登陆,重置菜单类型
-                LocalStorage.setMenuType(0);
-                LocalStorage.setToken(info.token);
-                LocalStorage.setUserInfo({
-                    id: info.userId,
-                    name: info.nickName,
-                });
                 if (remember) {// 记住密码
                     LocalStorage.setAccountPassword({
                         account: data.userName,
@@ -46,6 +39,13 @@ const useLoginStore = (): LoginStore => {
                 } else {// 不记住密码
                     LocalStorage.setAccountPassword(undefined);
                 }
+                // 首次登陆,重置菜单类型
+                LocalStorage.setMenuType(0);
+                LocalStorage.setToken(info.token);
+                LocalStorage.setUserInfo({
+                    id: info.userId,
+                    name: info.nickName,
+                });
                 // 获取用户详细信息(permissions,role, user)
                 const resUserInfo = await apis.fetchUserInfo(info.userId);
                 if (resUserInfo.code === 200) {
@@ -109,4 +109,4 @@ const useLoginStore = (): LoginStore => {
     };
 };
 
-export default useLoginStore();
+export default useLoginStore();

+ 31 - 8
src/router.tsx

@@ -242,7 +242,37 @@ router.routes.forEach((route: any) => {
         const location = useLocation();
         const path = location.pathname;
 
-        if (LocalStorage.getToken()) {// 已登录
+        const originUrl = window.location.origin;
+        const fullUrl = window.location.href;
+        const urlParams = new URLSearchParams(new URL(fullUrl).search);
+        const code = urlParams.get('code');
+        const state = urlParams.get('state');
+        const userInfo = localStorage.getItem('userInfo');
+        const token = urlParams.get('token');
+        if (token) {// 通过token登陆
+            const checkToken = async (token: string) => {
+                try {
+                    const res = await apis.checkToken(token);
+                    if(res.data.status) {
+                        localStorage.setItem('token', token);
+                        LocalStorage.setPermissions(res.permissions);
+                        LocalStorage.setRoles(res.roles);
+                        LocalStorage.setUserInfo({
+                            id: res.user.userId,
+                            name: res.user.nickName,
+                        });
+                        window.location.replace(originUrl + path);
+                    }
+                } catch (error: any) {
+                    Modal.error({
+                        title: 'Error',
+                        content: 'token验证失败',
+                    })
+                }
+                return <Navigate to='/login' replace={true} />
+            }
+            checkToken(token);
+        } else if (LocalStorage.getToken()) {// 已登录
             return <>{component}</>
         } else {// 未登录
 
@@ -260,13 +290,6 @@ router.routes.forEach((route: any) => {
                 }
             }
 
-            const originUrl = window.location.origin;
-            const fullUrl = window.location.href;
-            const urlParams = new URLSearchParams(new URL(fullUrl).search);
-            const code = urlParams.get('code');
-            const state = urlParams.get('state');
-            const userInfo = localStorage.getItem('userInfo');
-
             if (fullUrl.includes(originUrl + '/?code') && code && state) {// 通过code登陆
                 if (!userInfo) {
                     jkLogin({ code: code, redirectUrl: encodeURIComponent(originUrl) }, state);