前端: 添加useAuth认证钩子

This commit is contained in:
Frontend Developer 2026-03-10 09:18:56 +00:00
parent 3e1949747e
commit 5d5acc80f7

View File

@ -0,0 +1,36 @@
import { useState, useEffect } from 'react';
export const useAuth = () => {
const [user, setUser] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
const token = localStorage.getItem('token');
if (token) {
// Validate token and get user info
fetch('/api/auth/me', {
headers: { Authorization: `Bearer ${token}` }
})
.then(res => res.json())
.then(data => setUser(data.user))
.catch(() => localStorage.removeItem('token'))
.finally(() => setLoading(false));
} else {
setLoading(false);
}
}, []);
const login = (token, userInfo) => {
localStorage.setItem('token', token);
setUser(userInfo);
};
const logout = () => {
localStorage.removeItem('token');
setUser(null);
};
return { user, loading, login, logout };
};
export default useAuth;