diff --git a/src/api/user.api.ts b/src/api/user.api.ts index d32a797..abae9d1 100644 --- a/src/api/user.api.ts +++ b/src/api/user.api.ts @@ -5,17 +5,16 @@ import { RegisterInputDto, ForgetPasswordInputDto, DeleteUser, - Token, - TokenRefreshPayload, + AccessToken, User, } from './user.interface' export async function register(data: RegisterInputDto) { - return axios.post('/api/users', data) + return axios.post('/api/users', data) } export async function login(data: LoginInputDto) { - return axios.post('/api/users/token', data) + return axios.post('/api/users/token', data) } export async function logout() { @@ -23,17 +22,17 @@ export async function logout() { } export async function forgetPassword(data: ForgetPasswordInputDto) { - return axios.patch('/api/users/password', data) + return axios.patch('/api/users/password', data) } export async function deleteUser(data: DeleteUser) { return axios.delete('/api/users/me', { data }) } -let refreshing: Promise> | null -export async function refreshToken(data: TokenRefreshPayload) { +let refreshing: Promise> | null +export async function refreshToken() { if (!refreshing) { - refreshing = axios.put('/api/users/me/token', data).finally(() => { + refreshing = axios.put('/api/users/me/token').finally(() => { refreshing = null }) } diff --git a/src/api/user.interface.ts b/src/api/user.interface.ts index a84504e..b9a7b43 100644 --- a/src/api/user.interface.ts +++ b/src/api/user.interface.ts @@ -23,14 +23,7 @@ export interface DeleteUser extends EmailVerifyDto { password: string } -export interface Token { - accessToken: string - refreshToken: string -} - -export interface TokenRefreshPayload { - refreshToken: string -} +export type AccessToken = string /** 用户 */ export interface User { diff --git a/src/pages/components/DeleteUser.tsx b/src/pages/components/DeleteUser.tsx index 595ea30..686871f 100644 --- a/src/pages/components/DeleteUser.tsx +++ b/src/pages/components/DeleteUser.tsx @@ -38,7 +38,6 @@ export function DeleteUser() { onSubmit: async (values) => { await api.user.deleteUser(values) localStorage.removeItem('accessToken') - localStorage.removeItem('refreshToken') toast.success('用户删除成功') router.push('/login') }, diff --git a/src/pages/forget-password.tsx b/src/pages/forget-password.tsx index d992c52..f91868b 100644 --- a/src/pages/forget-password.tsx +++ b/src/pages/forget-password.tsx @@ -34,8 +34,7 @@ export default function ForgetPassword() { }), onSubmit: async (values) => { const res = await api.user.forgetPassword(values) - localStorage.setItem('accessToken', res.data.accessToken) - localStorage.setItem('refreshToken', res.data.refreshToken) + localStorage.setItem('accessToken', res.data) toast.success('密码重置成功!', { onClose: () => router.push('/login'), }) diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 85861a2..07b32aa 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -30,7 +30,6 @@ export default function Home() { async function logout() { await api.user.logout() localStorage.removeItem('accessToken') - localStorage.removeItem('refreshToken') router.push('/login') } diff --git a/src/pages/login.tsx b/src/pages/login.tsx index 8989064..bb5e81d 100644 --- a/src/pages/login.tsx +++ b/src/pages/login.tsx @@ -26,8 +26,7 @@ export default function Login() { }), onSubmit: async (values) => { const res = await api.user.login(values) - localStorage.setItem('accessToken', res.data.accessToken) - localStorage.setItem('refreshToken', res.data.refreshToken) + localStorage.setItem('accessToken', res.data) router.push('/') }, }) diff --git a/src/pages/register.tsx b/src/pages/register.tsx index f8c55f9..899abe8 100644 --- a/src/pages/register.tsx +++ b/src/pages/register.tsx @@ -32,8 +32,7 @@ export default function Register() { }), onSubmit: async (values) => { const res = await api.user.register(values) - localStorage.setItem('accessToken', res.data.accessToken) - localStorage.setItem('refreshToken', res.data.refreshToken) + localStorage.setItem('accessToken', res.data) router.push('/') }, }) diff --git a/src/utils/axios.ts b/src/utils/axios.ts index ab211c3..5dff12a 100644 --- a/src/utils/axios.ts +++ b/src/utils/axios.ts @@ -38,14 +38,11 @@ axios.interceptors.response.use( } switch (error.response?.status) { case status.UNAUTHORIZED: { - const refreshToken = localStorage.getItem('refreshToken') - if (!refreshToken) { - Router.push('/login') - return Promise.reject(error) + if (error.config?.url === '/api/users/token') { + throw throwError(error) } - const res = await api.user.refreshToken({ refreshToken }) - localStorage.setItem('accessToken', res.data.accessToken) - localStorage.setItem('refreshToken', res.data.refreshToken) + const res = await api.user.refreshToken() + localStorage.setItem('accessToken', res.data) return error.config && axios.request(error.config) } default: {