Skip to content

Commit 27fa3b2

Browse files
authored
Merge pull request #110 from part3-4team-Taskify/feature/Gnb
[Refactor] 로그인 토큰 만료 설정 제거(백엔드 설정 없음)
2 parents 360dd25 + 54eb1b1 commit 27fa3b2

File tree

8 files changed

+7
-70
lines changed

8 files changed

+7
-70
lines changed

src/api/auth.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { UserResponse } from "./users";
44

55
interface AuthResponse extends UserResponse {
66
accessToken: string;
7-
expiresIn: number;
87
}
98

109
export const postAuthData = async ({

src/api/axiosInstance.ts

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
// axiosInstance.ts
2-
31
import axios from "axios";
4-
import useUserStore from "@/store/useUserStore";
52

63
console.log("🔐 BASE_URL:", process.env.NEXT_PUBLIC_BASE_URL);
74
console.log("🔐 API_TOKEN:", process.env.NEXT_PUBLIC_API_TOKEN);
@@ -19,27 +16,4 @@ axiosInstance.interceptors.request.use((config) => {
1916
return config;
2017
});
2118

22-
// login 토큰 만료 체크 함수
23-
const isTokenExpired = () => {
24-
const expiresAt = localStorage.getItem("expiresAt");
25-
if (!expiresAt) return true;
26-
27-
return new Date().getTime() > parseInt(expiresAt, 10);
28-
};
29-
30-
// 인터셉터로 만료 체크 후 헤더에 추가
31-
axiosInstance.interceptors.request.use((config) => {
32-
const token = localStorage.getItem("accessToken");
33-
34-
if (token && !isTokenExpired()) {
35-
config.headers.Authorization = `Bearer ${token}`;
36-
} else {
37-
// 만료되거나 없는 경우
38-
localStorage.removeItem("accessToken");
39-
localStorage.removeItem("expiresAt");
40-
useUserStore.getState().clearUser(); // Zustand 상태 초기화
41-
}
42-
return config;
43-
});
44-
4519
export default axiosInstance;

src/components/gnb/HeaderDefault.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ const HeaderDefault: React.FC<HeaderDefaultProps> = ({ variant = "white" }) => {
1919
if (isLoggedIn) {
2020
clearUser();
2121
localStorage.removeItem("accessToken");
22-
localStorage.removeItem("expiresAt");
2322
router.push("/");
2423
} else {
2524
router.push("/login");

src/components/gnb/UserMenu.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ const UserMenu: React.FC<UserMenuProps> = ({ isMenuOpen, setIsMenuOpen }) => {
2525
localStorage.setItem("isLoggingOut", "true");
2626
clearUser();
2727
localStorage.removeItem("accessToken");
28-
localStorage.removeItem("expiresAt");
2928
router.push("/");
3029
};
3130

src/hooks/useAuthGuard.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export const useAuthGuard = (redirectTo: string = "/login") => {
2222
} catch (error) {
2323
console.error("유저 복원 실패:", error);
2424
localStorage.removeItem("accessToken");
25-
localStorage.removeItem("expiresAt");
2625
router.replace(redirectTo);
2726
}
2827
}

src/pages/_app.tsx

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,12 @@ type AppPropsWithLayout = AppProps & {
1616
Component: NextPageWithLayout;
1717
};
1818

19-
// 토큰 만료 설정
20-
function isTokenExpired() {
21-
const expiresAt = localStorage.getItem("expiresAt");
22-
if (!expiresAt) return true;
23-
return new Date().getTime() > parseInt(expiresAt, 10);
24-
}
25-
2619
export default function App({ Component, pageProps }: AppPropsWithLayout) {
20+
// 앱 최초 실행 시 로그인 여부 판단
2721
useEffect(() => {
2822
const initializeUser = async () => {
2923
const token = localStorage.getItem("accessToken");
30-
if (token && !isTokenExpired()) {
24+
if (token) {
3125
try {
3226
const userData = await getUserInfo({ teamId: TEAM_ID });
3327
useUserStore.getState().setUser(userData);
@@ -37,7 +31,6 @@ export default function App({ Component, pageProps }: AppPropsWithLayout) {
3731
} else {
3832
useUserStore.getState().clearUser();
3933
localStorage.removeItem("accessToken");
40-
localStorage.removeItem("expiresAt");
4134
}
4235
};
4336

@@ -47,6 +40,7 @@ export default function App({ Component, pageProps }: AppPropsWithLayout) {
4740
const router = useRouter();
4841
const pathname = router.pathname;
4942

43+
// 헤더 기본 출력 설정
5044
const isDashboardPage = pathname.startsWith("/dashboard");
5145
// 헤더 숨길 페이지
5246
const noHeaderRoutes = ["/login", "/signup", "/mydashboard", "/mypage"];

src/pages/login.tsx

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { useRouter } from "next/router";
33
import useUserStore from "@/store/useUserStore";
44
import { getUserInfo } from "@/api/users";
55
import { postAuthData } from "@/api/auth";
6-
import { parseJwt } from "@/utils/parseJwt";
76
import Link from "next/link";
87
import Input from "@/components/input/Input";
98
import { TEAM_ID } from "@/constants/team";
@@ -26,20 +25,11 @@ export default function LoginPage() {
2625
const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
2726
e.preventDefault();
2827
const { email, password } = values;
29-
try {
30-
const { accessToken, expiresIn } = await postAuthData({
31-
email,
32-
password,
33-
});
34-
35-
// 현재 백엔드에서 exp 없어서 로그인 만료 설정 불가능, 요청해보고 안 되면 제거
36-
// 만료 시간 계산 후 저장
37-
const payload = parseJwt(accessToken);
38-
console.log(payload.exp);
39-
const expiresAt = new Date().getTime() + expiresIn * 1000;
40-
localStorage.setItem("accessToken", accessToken);
41-
localStorage.setItem("expiresAt", expiresAt.toString());
4228

29+
try {
30+
const response = await postAuthData({ email, password });
31+
const token = response.accessToken;
32+
localStorage.setItem("accessToken", token);
4333
// 로그인 성공 시 사용자 정보 요청
4434
const userData = await getUserInfo({ teamId: TEAM_ID });
4535
// Zustand에 저장

src/utils/parseJwt.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)