Skip to content

Commit

Permalink
fix: 새로고침 이슈 해결
Browse files Browse the repository at this point in the history
  • Loading branch information
Emithen committed Feb 2, 2025
1 parent 4989d9d commit c196103
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
18 changes: 10 additions & 8 deletions src/components/ProtectedRoute.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import { Navigate, Outlet } from "react-router-dom";
import { useContext } from "react";
import {AuthContext} from "../contexts/AuthContext";
import { AuthContext } from "../contexts/AuthContext";

const ProtectedRoute = () => {
const { user } = useContext(AuthContext);
const { user, isLoading } = useContext(AuthContext);

if (!user?.isLoggedIn) {
return <Navigate to="/login" replace />;
}
// ✅ 로딩 중이면 아무것도 렌더링하지 않음 (or 로딩 UI 표시 가능)
if (isLoading) {
return null; // 👈 로딩 중에는 리디렉트 X
}

return <Outlet />;
}
// ✅ 로그인 상태 확인 후 접근 허용 또는 리디렉트
return user.isLoggedIn ? <Outlet /> : <Navigate to="/login" replace />;
};

export default ProtectedRoute;
export default ProtectedRoute;
12 changes: 6 additions & 6 deletions src/contexts/AuthContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import axios from "axios";

interface AuthContextProps {
user: User;
isLoading: boolean;
loginUser: (
studentId: string,
password: string
Expand All @@ -22,22 +23,21 @@ interface User {

export const AuthContext = createContext<AuthContextProps>({
user: { isLoggedIn: false },
isLoading: true,
loginUser: async () => ({ success: false, message: "초기값" }),
logoutUser: () => {},
});

export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
const [user, setUser] = useState<User>({ isLoggedIn: false });
const [isLoading, setIsLoading] = useState(true);

useEffect(() => {
const token = getToken();

if (token) {
setUser({ isLoggedIn: false });

// getUserData(token)
// .then(setUser)
// .catch(() => removeToken());
setUser({ isLoggedIn: true });
setIsLoading(false);
}
}, []);

Expand Down Expand Up @@ -71,7 +71,7 @@ export const AuthProvider: React.FC<AuthProviderProps> = ({ children }) => {
};

return (
<AuthContext.Provider value={{ user, loginUser, logoutUser }}>
<AuthContext.Provider value={{ user, isLoading, loginUser, logoutUser }}>
{children}
</AuthContext.Provider>
);
Expand Down

0 comments on commit c196103

Please sign in to comment.