From 7fa8bb49d6192972b814a419e0f6bd123b8e4270 Mon Sep 17 00:00:00 2001 From: 1708-huayu <57060237+1708-huayu@users.noreply.github.com> Date: Mon, 25 Nov 2024 18:28:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:login-=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 16 ++++++++++++++++ package.json | 2 ++ src/app/login/page.tsx | 34 ++++++++++++++-------------------- src/utils/axiosReq.ts | 30 +++++++++++++++++++++++++++++- 4 files changed, 61 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 49158bf..33a7006 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@tailwindcss/forms": "^0.5.7", "antd": "^5.16.1", "axios": "^1.6.8", + "js-cookie": "^3.0.5", "next": "14.1.3", "postcss": "8.4.31", "react": "^18", @@ -22,6 +23,7 @@ "tailwindcss": "3.3.3" }, "devDependencies": { + "@types/js-cookie": "^3.0.6", "@types/node": "^20", "@types/react": "^18", "@types/react-big-calendar": "^1.8.9", @@ -1537,6 +1539,12 @@ "integrity": "sha512-p9eZ2X9B80iKiTW4ukVj8B4K6q9/+xFtQ5MGYA5HWToY9nL4EkhV9+6ftT2VHpVMEZb5Tv00Iel516bVdO+yRw==", "dev": true }, + "node_modules/@types/js-cookie": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/@types/js-cookie/-/js-cookie-3.0.6.tgz", + "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==", + "dev": true + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -4529,6 +4537,14 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index 14aa4e2..f9e0e29 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@tailwindcss/forms": "^0.5.7", "antd": "^5.16.1", "axios": "^1.6.8", + "js-cookie": "^3.0.5", "next": "14.1.3", "postcss": "8.4.31", "react": "^18", @@ -23,6 +24,7 @@ "tailwindcss": "3.3.3" }, "devDependencies": { + "@types/js-cookie": "^3.0.6", "@types/node": "^20", "@types/react": "^18", "@types/react-big-calendar": "^1.8.9", diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 47475de..ba279aa 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -19,7 +19,8 @@ import type {CSSProperties} from 'react'; import {useState} from 'react'; import {LoginObject} from "@/lib/login/definitions"; import {httpReq} from "@/utils/axiosReq"; - +import Cookies from 'js-cookie'; +import { useRouter } from 'next/navigation' type LoginType = 'phone' | 'account'; const iconStyles: CSSProperties = { @@ -32,6 +33,7 @@ const iconStyles: CSSProperties = { const Page = () => { const [loginType, setLoginType] = useState('phone'); const {token} = theme.useToken(); + const router = useRouter() return (
{ backgroundColor: 'rgba(255,255,255,0.25)', backdropFilter: 'blur(4px)', }, - // title: '活动标题,可配置图片', - // subTitle: '活动介绍说明文字', - // action: ( - // action: ( - // - // ), }} onFinish={(formData:LoginObject)=>{ console.log("登录信息:"+formData.username+";"+formData.password) @@ -80,9 +66,17 @@ const Page = () => { username: formData.username, password: formData.password }).then(response=>{ - console.log(response) - response.status; - response.data; + console.log(response); + if(response.data.status.code===200){ + // localStorage.removeItem("platform-security") + localStorage.setItem('platform-security',response.data.data) + // 删除名为 'platform-security' 的Cookie + // Cookies.remove('platform-security'); + // 设置一个有效期为7天的Cookie + Cookies.set('platform-security', response.data.data, { expires: 7 }); + // 登录成功,跳转到首页或者回调 + router.push('/task/project') + }; }) }} actions={ diff --git a/src/utils/axiosReq.ts b/src/utils/axiosReq.ts index 93e3562..6e97db9 100644 --- a/src/utils/axiosReq.ts +++ b/src/utils/axiosReq.ts @@ -15,4 +15,32 @@ export const httpReq = axios.create({ const cancelTokenSource: CancelTokenSource = axios.CancelToken.source(); httpReq.defaults.headers.common['Accept'] = 'application/json'; -httpReq.interceptors.request.use() \ No newline at end of file +httpReq.interceptors.request.use((config) => { + const token = localStorage.getItem('platform-security'); // 从本地存储中获取 token + if (token) { + // config.headers.Authorization = `Bearer ${token}`; + config.headers.Authorization = `${token}`; + } + return config; + }, + (error) => { + return Promise.reject(error); + }) +httpReq.interceptors.response.use( + (response) => { + // http请求最外层 + if (response.status >= 500) { + console.log("系统异常") + } else if (response.status >= 400 && response.status <= 500) { + console.log("无权限") + } + return response; + }, + (error) => { + if (error.response && error.response.status === 401) { + localStorage.removeItem('authToken'); + window.location.href = '/login'; + } + return Promise.reject(error); + } +); \ No newline at end of file