前端: 添加useAuth认证钩子
This commit is contained in:
parent
3e1949747e
commit
5d5acc80f7
36
frontend/src/renderer/hooks/useAuth.js
Normal file
36
frontend/src/renderer/hooks/useAuth.js
Normal 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;
|
||||||
Loading…
Reference in New Issue
Block a user