1. 应用初始化 autoLogin;
2. 播放音频时增加鉴权.
feature/artists
mackt 4 months ago
parent 2c5dce0f78
commit d26f9e24cb

@ -2,12 +2,26 @@
import { useEffect } from 'react';
import { useShallow } from 'zustand/react/shallow';
import { autoLogin } from '@/hooks';
import { useUserStore } from '@/store';
export default function Mounted() {
const { getUserInfo } = useUserStore(
useShallow((state) => ({
getUserInfo: state.getUserInfo,
})),
);
const handleAutoLogin = async () => {
await autoLogin();
await getUserInfo();
};
// 身份验证
useEffect(() => {
autoLogin();
handleAutoLogin();
}, []);
return <div></div>;

@ -23,14 +23,14 @@ export const SmsLogin = async ({
};
export const autoLogin = async () => {
// 如果没有 token则略过
const token = await getAuthorization();
if (!token) {
// 如果没有 token则清空 localStorage不往下执行
localStorage.clear();
return;
}
// 登录成功后将token存入localStorage
// 如果有 token则触发 autoLogin 接口
const uuid = localStorage.getItem('deviceId') || 'error';
const result = await apiAutoLogin({ deviceId: uuid });
if (result.code === 200) {

@ -3,7 +3,10 @@ import cloneDeep from 'lodash/cloneDeep';
import { create } from 'zustand';
import { devtools, persist, createJSONStorage } from 'zustand/middleware';
import { openLogin } from '@/components/Login/loginContext';
import { apiGetSongRandom } from '@/services';
import { clearAccessToken, checkAuthOffline } from '@/utils';
interface AuioState {
/** 播放状态 true: 播放 false: 暂停 */
@ -234,6 +237,13 @@ const useAudioState = create<AuioState>()(
}),
),
setPlayListInfo: (list) => {
const auth: boolean = checkAuthOffline();
if (!auth) {
clearAccessToken();
openLogin();
return false;
}
set(
produce((state) => {
state.playListInfo = list;

@ -4,8 +4,14 @@ import { parseCookies } from 'nookies';
// 离线验证
export const checkAuthOffline: () => boolean = () => {
const { token } = parseCookies();
return !!token;
// cookie
// const { token } = parseCookies();
// store
const userStorage: string = localStorage.getItem('user') || '{}';
const userId = JSON.parse(userStorage || '{}')?.state?.userInfo?.id ?? '';
return !!userId;
};
export const getAuthorization = async () => {

Loading…
Cancel
Save