Browse Source

fix login

Signed-off-by: shanghaikid <jiangruiyi@gmail.com>
shanghaikid 2 years ago
parent
commit
2074cff1e5

+ 1 - 1
client/package.json

@@ -23,7 +23,7 @@
     "react-dom": "^18.2.0",
     "react-highlight-words": "^0.17.0",
     "react-i18next": "^12.0.0",
-    "react-router-dom": "^6.4.3",
+    "react-router-dom": "^6.14.1",
     "react-syntax-highlighter": "^15.4.4",
     "socket.io-client": "^4.1.3",
     "vite": "^3.2.2",

+ 7 - 17
client/src/components/layout/GlobalEffect.tsx

@@ -1,7 +1,7 @@
 import React, { useContext } from 'react';
 import axiosInstance from '../../http/Axios';
 import { rootContext } from '../../context/Root';
-import { CODE_STATUS } from '../../consts/Http';
+import { HTTP_STATUS_CODE } from '../../consts/Http';
 import { authContext } from '../../context/Auth';
 import { MILVUS_ADDRESS } from '../../consts/Localstorage';
 
@@ -16,7 +16,9 @@ const GlobalEffect = (props: { children: React.ReactNode }) => {
   if (axiosResInterceptor === null) {
     axiosResInterceptor = axiosInstance.interceptors.response.use(
       function (res: any) {
-        if (res.statusCode && res.statusCode !== CODE_STATUS.SUCCESS) {
+        debugger;
+
+        if (res.statusCode && res.statusCode !== HTTP_STATUS_CODE.OK) {
           openSnackBar(res.data.message, 'warning');
           return Promise.reject(res.data);
         }
@@ -31,30 +33,18 @@ const GlobalEffect = (props: { children: React.ReactNode }) => {
           window.localStorage.removeItem(MILVUS_ADDRESS);
         };
         switch (response.status) {
-          case CODE_STATUS.UNAUTHORIZED:
-            return Promise.reject(error);
-          case CODE_STATUS.FORBIDDEN:
-            reset();
+          case HTTP_STATUS_CODE.UNAUTHORIZED:
+          case HTTP_STATUS_CODE.FORBIDDEN:
+            setTimeout(reset, 2000);
             break;
           default:
             break;
         }
         if (response.data) {
           const { message: errMsg } = response.data;
-          // After create index ,we will try to get index progress
-          // if index created success before setTimeout , will throw this error, should ignore it.
-          if (errMsg.includes('no index is created')) {
-            return Promise.reject(error);
-          }
           // We need check status 401 in login page
           // So server will return 500 when change the user password.
           errMsg && openSnackBar(errMsg, 'error');
-          if (
-            errMsg.includes('unauthenticated') ||
-            errMsg.includes('No connection established')
-          ) {
-            reset();
-          }
           return Promise.reject(error);
         }
         if (error.message) {

+ 47 - 2
client/src/consts/Http.ts

@@ -1,9 +1,54 @@
-export enum CODE_STATUS {
-  SUCCESS = 200,
+export enum HTTP_STATUS_CODE {
+  CONTINUE = 100,
+  SWITCHING_PROTOCOLS = 101,
+  PROCESSING = 102,
+  EARLYHINTS = 103,
+  OK = 200,
+  CREATED = 201,
+  ACCEPTED = 202,
+  NON_AUTHORITATIVE_INFORMATION = 203,
+  NO_CONTENT = 204,
+  RESET_CONTENT = 205,
+  PARTIAL_CONTENT = 206,
+  AMBIGUOUS = 300,
+  MOVED_PERMANENTLY = 301,
+  FOUND = 302,
+  SEE_OTHER = 303,
+  NOT_MODIFIED = 304,
+  TEMPORARY_REDIRECT = 307,
+  PERMANENT_REDIRECT = 308,
+  BAD_REQUEST = 400,
   UNAUTHORIZED = 401,
+  PAYMENT_REQUIRED = 402,
   FORBIDDEN = 403,
+  NOT_FOUND = 404,
+  METHOD_NOT_ALLOWED = 405,
+  NOT_ACCEPTABLE = 406,
+  PROXY_AUTHENTICATION_REQUIRED = 407,
+  REQUEST_TIMEOUT = 408,
+  CONFLICT = 409,
+  GONE = 410,
+  LENGTH_REQUIRED = 411,
+  PRECONDITION_FAILED = 412,
+  PAYLOAD_TOO_LARGE = 413,
+  URI_TOO_LONG = 414,
+  UNSUPPORTED_MEDIA_TYPE = 415,
+  REQUESTED_RANGE_NOT_SATISFIABLE = 416,
+  EXPECTATION_FAILED = 417,
+  I_AM_A_TEAPOT = 418,
+  MISDIRECTED = 421,
+  UNPROCESSABLE_ENTITY = 422,
+  FAILED_DEPENDENCY = 424,
+  TOO_MANY_REQUESTS = 429,
+  INTERNAL_SERVER_ERROR = 500,
+  NOT_IMPLEMENTED = 501,
+  BAD_GATEWAY = 502,
+  SERVICE_UNAVAILABLE = 503,
+  GATEWAY_TIMEOUT = 504,
+  HTTP_VERSION_NOT_SUPPORTED = 505,
 }
 
+
 export const START_LOADING_TIME = 350;
 
 export enum WS_EVENTS {

+ 8 - 6
client/src/context/Root.tsx

@@ -113,12 +113,14 @@ export const RootProvider = (props: { children: React.ReactNode }) => {
     };
 
   useEffect(() => {
-    const fetchVersion = async () => {
-      const res = await MilvusHttp.getVersion();
-      setVersionInfo(res);
-    };
-    fetchVersion();
-  }, []);
+    if (isAuth) {
+      const fetchVersion = async () => {
+        const res = await MilvusHttp.getVersion();
+        setVersionInfo(res);
+      };
+      fetchVersion();
+    }
+  }, [isAuth]);
 
   useEffect(() => {
     // if auth is off, hide snack bar

+ 2 - 1
client/src/pages/connect/AuthForm.tsx

@@ -181,7 +181,8 @@ export const AuthForm = (props: any) => {
     []
   );
 
-  const handleConnect = async () => {
+  const handleConnect = async (event: React.FormEvent) => {
+    event.preventDefault();
     const address = formatAddress(form.address);
     const data = { ...form, address };
     await MilvusHttp.connect(data);

+ 15 - 15
client/yarn.lock

@@ -697,10 +697,10 @@
     prop-types "^15.7.2"
     reselect "^4.0.0"
 
-"@remix-run/router@1.0.3":
-  version "1.0.3"
-  resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.0.3.tgz#953b88c20ea00d0eddaffdc1b115c08474aa295d"
-  integrity sha512-ceuyTSs7PZ/tQqi19YZNBc5X7kj1f8p+4DIyrcIYFY9h+hd1OKm4RqtiWldR9eGEvIiJfsqwM4BsuCtRIuEw6Q==
+"@remix-run/router@1.7.1":
+  version "1.7.1"
+  resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.7.1.tgz#fea7ac35ae4014637c130011f59428f618730498"
+  integrity sha512-bgVQM4ZJ2u2CM8k1ey70o1ePFXsEzYVZoWghh6WjM8p59jQ7HxzbHW4SbnWFG7V9ig9chLawQxDTZ3xzOF8MkQ==
 
 "@rollup/pluginutils@^4.1.1":
   version "4.2.1"
@@ -3431,20 +3431,20 @@ react-refresh@^0.14.0:
   resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
   integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
 
-react-router-dom@^6.4.3:
-  version "6.4.3"
-  resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.4.3.tgz#70093b5f65f85f1df9e5d4182eb7ff3a08299275"
-  integrity sha512-MiaYQU8CwVCaOfJdYvt84KQNjT78VF0TJrA17SIQgNHRvLnXDJO6qsFqq8F/zzB1BWZjCFIrQpu4QxcshitziQ==
+react-router-dom@^6.14.1:
+  version "6.14.1"
+  resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.14.1.tgz#0ad7ba7abdf75baa61169d49f096f0494907a36f"
+  integrity sha512-ssF6M5UkQjHK70fgukCJyjlda0Dgono2QGwqGvuk7D+EDGHdacEN3Yke2LTMjkrpHuFwBfDFsEjGVXBDmL+bWw==
   dependencies:
-    "@remix-run/router" "1.0.3"
-    react-router "6.4.3"
+    "@remix-run/router" "1.7.1"
+    react-router "6.14.1"
 
-react-router@6.4.3:
-  version "6.4.3"
-  resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.4.3.tgz#9ed3ee4d6e95889e9b075a5d63e29acc7def0d49"
-  integrity sha512-BT6DoGn6aV1FVP5yfODMOiieakp3z46P1Fk0RNzJMACzE7C339sFuHebfvWtnB4pzBvXXkHP2vscJzWRuUjTtA==
+react-router@6.14.1:
+  version "6.14.1"
+  resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.14.1.tgz#5e82bcdabf21add859dc04b1859f91066b3a5810"
+  integrity sha512-U4PfgvG55LdvbQjg5Y9QRWyVxIdO1LlpYT7x+tMAxd9/vmiPuJhIwdxZuIQLN/9e3O4KFDHYfR9gzGeYMasW8g==
   dependencies:
-    "@remix-run/router" "1.0.3"
+    "@remix-run/router" "1.7.1"
 
 react-syntax-highlighter@^15.4.4:
   version "15.4.4"

+ 10 - 0
server/src/middlewares/index.ts

@@ -5,6 +5,7 @@ import { MilvusService } from '../milvus/milvus.service';
 import { INSIGHT_CACHE, MILVUS_ADDRESS } from '../utils/Const';
 import { HttpError } from 'http-errors';
 import { HTTP_STATUS_CODE } from '../utils/Error';
+import HttpErrors from 'http-errors';
 
 export const ReqHeaderMiddleware = (
   req: Request,
@@ -29,6 +30,15 @@ export const ReqHeaderMiddleware = (
     );
   }
 
+  const CONNECT_URL = `/api/v1/milvus/connect`;
+
+  if (req.url !== CONNECT_URL && !MilvusService.activeMilvusClient) {
+    throw HttpErrors(
+      HTTP_STATUS_CODE.FORBIDDEN,
+      'Can not find your connection, please connect Milvus again'
+    );
+  }
+
   next();
 };