From 3ab6efc5d274b2fa7863149901e638b92b8a6f2d Mon Sep 17 00:00:00 2001 From: Jimmy Liow <18777396951@163.com> Date: Tue, 23 May 2023 16:53:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=A8=E6=88=B7=E4=BB=A4?= =?UTF-8?q?=E7=89=8C=E4=BF=9D=E5=AD=98=E5=88=B0=20Session?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/Auth.js | 6 +++++- src/stores/Root.js | 19 +++++++++++++++++++ src/views/App.jsx | 13 +++++++++++-- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/stores/Auth.js b/src/stores/Auth.js index 765c61c..e248a6e 100644 --- a/src/stores/Auth.js +++ b/src/stores/Auth.js @@ -3,11 +3,14 @@ import { fetchJSON, postForm } from '@/utils/request'; import { HT_HOST } from "@/config"; import { prepareUrl } from '@/utils/commons'; +const KEY_LOGIN_TOKEN = 'KEY_LOGIN_TOKEN'; + class Auth { constructor(root) { makeAutoObservable(this, { rootStore: false }); this.root = root; + this.login.token = root.getSession(KEY_LOGIN_TOKEN); } valdateUserPassword(usr, pwd) { @@ -20,6 +23,7 @@ class Auth { .then(json => { if (json.errcode == 0) { this.login.token = json.Result.token; + this.root.putSession(KEY_LOGIN_TOKEN, json.Result.token); return json.Result.WU_LMI_SN; } else { throw new Error(json.errmsg + ': ' + json.errcode); @@ -71,7 +75,7 @@ class Auth { } login = { - token: '249FC25C949B4BB182431F89762AE5E8', + token: '',//'249FC25C949B4BB182431F89762AE5E8', userId: 1, // LMI_SN username: 'Vu Xuan Giang', travelAgencyId: 32531, // VEI_SN diff --git a/src/stores/Root.js b/src/stores/Root.js index 0907e7b..a1642ed 100644 --- a/src/stores/Root.js +++ b/src/stores/Root.js @@ -14,6 +14,25 @@ class Root { this.invoiceStore = new Invoice(this); makeAutoObservable(this); } + + getSession(key) { + if (window.sessionStorage) { + const sessionStorage = window.sessionStorage; + return sessionStorage.getItem(key); + } else { + console.error('browser not support sessionStorage!'); + return null; + } + } + + putSession(key, value) { + if (window.sessionStorage) { + const sessionStorage = window.sessionStorage; + return sessionStorage.setItem(key, value); + } else { + console.error('browser not support sessionStorage!'); + } + } } export default Root; \ No newline at end of file diff --git a/src/views/App.jsx b/src/views/App.jsx index 9f18497..f26a43d 100644 --- a/src/views/App.jsx +++ b/src/views/App.jsx @@ -1,10 +1,12 @@ -import { Outlet, Link, useHref, useLocation, NavLink } from "react-router-dom"; +import { Outlet, Link, useHref, useNavigate, NavLink } from "react-router-dom"; import { useEffect } from "react"; import { observer } from "mobx-react"; +import { toJS } from "mobx"; import { Layout, Menu, ConfigProvider, theme, Dropdown, Space, Row, Col, Badge, Typography, Divider, App as AntApp } from "antd"; import { DownOutlined } from "@ant-design/icons"; import "antd/dist/reset.css"; import AppLogo from "@/assets/logo-gh.png"; +import { isEmpty } from "@/utils/commons"; import { useStore } from "@/stores/StoreContext.js"; const { Header, Content, Footer } = Layout; @@ -27,13 +29,20 @@ const items = [ key: "3", }, ]; + function App() { const { authStore, noticeStore } = useStore(); + const { login } = authStore; const { noticeUnRead } = noticeStore; const href = useHref(); + const loginToken = toJS(login).token; + const navigate = useNavigate(); useEffect(() => { // Check location - console.info("href: " + href); + console.info("href: " + href + '; login.token: ' + loginToken); + if (href !== '/login' && isEmpty(loginToken)) { + // navigate('/login'); + } }, [href]); const splitPath = href.split("/");