Your Name 2 years ago
parent
commit
ee46a3a88c

+ 18
- 8
src/layouts/AuthLayout/components/RequireLogin.jsx View File

@@ -1,13 +1,23 @@
1
-import React, { useState } from 'react'
2
-import { useLocation, Navigate } from "react-router-dom"
1
+import React, { useState, useEffect } from 'react';
2
+import { useLocation, Navigate } from "react-router-dom";
3
+import { useModel } from '@/store';
4
+import { queryCurrentUser } from '@/services/user';
3 5
 
4 6
 export default (props) => {
5
-  const { user } = props
6
-  const location = useLocation()
7
+  const { user, setUser } = useModel('user');
8
+  const [userStatus, setUserStatus] = useState(user && user.id ? 1 : 0);
7 9
 
8
-  return props.children
10
+  useEffect(() => {
11
+    if (!user || !user.id) {
12
+      queryCurrentUser().then((res) => {
13
+        setUser(res);
14
+        setUserStatus(1);
15
+      }).catch(() => {
16
+        setUserStatus(-1);
17
+      });
18
+    }
19
+  }, []);
9 20
 
10
-  // return !user || !user.isLoged ?
11
-  //   <Navigate to="/login" state={{ from: location }} replace /> :
12
-  //   props.children
21
+  return userStatus === 0 ? null :
22
+    userStatus === -1 ? <Navigate to="/login?back=true" /> : props.children;
13 23
 }

+ 1
- 5
src/layouts/AuthLayout/index.jsx View File

@@ -9,20 +9,16 @@ import SiderBar from './components/SiderBar';
9 9
 import Header from './components/Header';
10 10
 import Container from './components/Container';
11 11
 import HtmlTitle from './components/HtmlTitle';
12
-import useReady from './useReady';
13 12
 
14 13
 import './style.less';
15 14
 
16 15
 export default (props) => {
17 16
   const { theme } = useModel('system');
18
-  const { user, setUser } = useModel('user');
17
+  const { user } = useModel('user');
19 18
 
20 19
   const allMenus = useMemo(() => getItems(), []);
21 20
   const [siderMenus, setSiderMenus] = useState([]);
22 21
 
23
-  // 如果当前未登录, 跳转到登录页
24
-  useReady({ user, setUser });
25
-
26 22
   const location = useLocation();
27 23
   const currentRoute = useRoute();
28 24
 

+ 0
- 21
src/layouts/AuthLayout/useReady.jsx View File

@@ -1,21 +0,0 @@
1
-import React, { useState, useEffect } from 'react';
2
-import { useNavigate, useHref } from "react-router-dom";
3
-import { queryCurrentUser } from '@/services/user';
4
-
5
-export default function useReady({ user, setUser }) {
6
-  const navigate = useNavigate();
7
-  const isLogined = user && user.id;
8
-
9
-  useEffect(() => {
10
-    if (!isLogined) {
11
-      queryCurrentUser().then((res) => {
12
-        setUser(res);
13
-      }).catch(err => {
14
-        const { data } = err;
15
-        if (data.code === 1001) {
16
-          navigate('/login?back=true');
17
-        }
18
-      });
19
-    }
20
-  }, [isLogined]);
21
-}

+ 1
- 1
vite.config.js View File

@@ -9,7 +9,7 @@ export default defineConfig({
9 9
     proxy: {
10 10
       '/api/': {
11 11
         // 要代理的地址
12
-        target: 'http://192.168.89.76:8087',
12
+        target: 'http://127.0.0.1:8087',
13 13
         // 配置了这个可以从 http 代理到 https
14 14
         // 依赖 origin 的功能可能需要这个,比如 cookie
15 15
         changeOrigin: true,