feat: 初始化页面时触发 autoLogin

feature/artists
mackt 4 months ago
parent 75e2ddd0f9
commit 2d374263f7

@ -3,7 +3,7 @@ import Script from 'next/script';
import { Toaster } from '@/components/ui/toaster';
import { Header, Footer, PlayerBar, ScrollTopButton, Dialog } from '@/components';
import { Mounted, Header, Footer, PlayerBar, ScrollTopButton, Dialog } from '@/components';
import './globals.css';
@ -40,6 +40,7 @@ export default function RootLayout({ children }: Readonly<{ children: React.Reac
<ScrollTopButton className="fixed right-[50%] transform-translate-x-[600px] bottom-[160px] right-[124px]" />
<Toaster />
<Dialog />
<Mounted />
</body>
<Script src="https://hm.baidu.com/hm.js?89d54ff4e336c923a74ee045cc600c6a" async />

@ -0,0 +1,14 @@
'use client';
import { useEffect } from 'react';
import { autoLogin } from '@/hooks';
export default function Mounted() {
// 身份验证
useEffect(() => {
autoLogin();
}, []);
return <div></div>;
}

@ -55,6 +55,7 @@ export { default as CommentItem } from './Comment/MainComment/CommentItem';
export { default as CommentList } from './Comment/MainComment/CommentList';
// Common
export { default as Mounted } from './common/Mounted';
export { default as Input } from './common/Input';
export { default as Button } from './common/Button';
export { default as AutoScrollContainer } from './common/AutoScrollContainer';

@ -1,7 +1,7 @@
import { jwtDecode } from 'jwt-decode';
import { apiUserLogin } from '@/services';
import { setAccessToken, clearAccessToken } from '@/utils';
import { apiUserLogin, apiAutoLogin } from '@/services';
import { setAccessToken, getAuthorization, clearAccessToken } from '@/utils';
export const SmsLogin = async ({
phone,
@ -22,6 +22,26 @@ export const SmsLogin = async ({
return result;
};
export const autoLogin = async () => {
// 如果没有 token则略过
const token = await getAuthorization();
if (!token) {
localStorage.clear();
return;
}
// 登录成功后将token存入localStorage
const uuid = localStorage.getItem('deviceId') || 'error';
const result = await apiAutoLogin({ deviceId: uuid });
if (result.code === 200) {
const jwt = result.data;
const { exp } = parseJWT(jwt);
setAccessToken({ token: jwt, expires: exp.toString() });
} else {
logout();
}
};
export const useLogin = () => {
return { SmsLogin };
};

@ -38,7 +38,7 @@ export const apiUserLogin = async (params: {
* @description token
*/
export const apiAutoLogin = async (params: { deviceId: string; deviceBrand?: string }) => {
const result: FetchResponse<string> = await clientHttp.post('/queyueapi/user/autoLogin', params);
const result: FetchResponse<string> = await clientHttp.post('/queyueapi/user/user/autoLogin', params);
return result;
};

Loading…
Cancel
Save