diff --git a/src/App.js b/src/App.js index 2dc813fa3195eb4cea67f96b0ee2773102f2ac1f..e7a381fc9226363ba9b3e2ae896da16b4322f05b 100644 --- a/src/App.js +++ b/src/App.js @@ -34,14 +34,8 @@ export function useToast() { // // setIsAuthenticated(false); // // }; // //jwt 전 로그인------------------------- - -// //jwt 후 로그인------------------------- -// const logout = () => { -// localStorage.removeItem('token'); -// delete axios.defaults.headers.common['Authorization']; -// setUser(null); -// setIsAuthenticated(false); // }; + //jwt 후 로그인------------------------- function App() { const [isAuthenticated, setIsAuthenticated] = useState(() => { @@ -69,35 +63,6 @@ function App() { setLastActivity(Date.now()); }; - // // 토큰 만료 체크 함수 - // const checkTokenExpiration = () => { - // const token = localStorage.getItem('token'); - // if (token) { - // try { - // const decoded = jwt_decode(token); - // if (decoded.exp * 1000 < Date.now()) { - // // 토큰 만료시 로그아웃과 동일한 효과 - // localStorage.removeItem('token'); - // setUser(null); - // setIsAuthenticated(false); - // toast.info('세션이 만료되었습니다. 다시 로그인해주세요.'); - // } - // } catch (error) { - // localStorage.removeItem('token'); - // setUser(null); - // setIsAuthenticated(false); - // } - // } - // }; - - // // 주기적으로 토큰 체크 (30초마다) - // React.useEffect(() => { - // const timer = setInterval(checkTokenExpiration, 30000); - // // 컴포넌트가 언마운트될 때 타이머 정리 - // return () => clearInterval(timer); - // }, []); - - // 추가-------------------------------- // 토큰 갱신 함수 const refreshToken = async () => { try { @@ -134,53 +99,6 @@ function App() { } }; - // 사용자 활동 감지 - 안되면 다시 활성화 - // useEffect(() => { - // const updateActivity = async (e) => { - // // input 태그나 textarea에서의 이벤트는 무시 - // if (e.target.tagName.toLowerCase() === 'input' || - // e.target.tagName.toLowerCase() === 'textarea') { - // console.log('입력 필드 이벤트 무시'); - // return; - // } - - // const now = Date.now(); - // const timeSinceLastRefresh = now - lastTokenRefresh; - // setLastActivity(now); - - // console.log('활동 감지:', { - // 현재시간: new Date(now).toLocaleString(), - // 마지막갱신: new Date(lastTokenRefresh).toLocaleString(), - // 경과시간: Math.floor(timeSinceLastRefresh / 1000 / 60) + '분' - // }); - - // // 마지막 토큰 갱신으로부터 00분 이상 지났을 때만 갱신 - // if (timeSinceLastRefresh > (process.env.REACT_APP_TOKEN_EXPIRATION-1) * 60 * 1000) { - // console.log('토큰 갱신 시도...'); - // await refreshToken(); - // } else { - // console.log(`토큰 갱신까지 ${Math.ceil((process.env.REACT_APP_TOKEN_EXPIRATION-1) - timeSinceLastRefresh/1000/60)}분 남음`); - // } - // }; - - // console.log('이벤트 리스너 등록됨'); - // window.addEventListener('mousemove', updateActivity); - // window.addEventListener('keydown', updateActivity); - // window.addEventListener('click', updateActivity); - // window.addEventListener('scroll', updateActivity); - // window.addEventListener('touchstart', updateActivity); - - // return () => { - // console.log('이벤트 리스너 제거됨'); - // window.removeEventListener('mousemove', updateActivity); - // window.removeEventListener('keydown', updateActivity); - // window.removeEventListener('click', updateActivity); - // window.removeEventListener('scroll', updateActivity); - // window.removeEventListener('touchstart', updateActivity); - // }; - // }, [lastTokenRefresh]); -//안되면 다시 활성화 ------------- - const logout = () => { localStorage.removeItem('token'); setUser(null); @@ -228,7 +146,7 @@ useEffect(() => { useEffect(() => { const checkInactivity = () => { const inactiveTime = Date.now() - lastActivity; - if (inactiveTime > process.env.REACT_APP_TOKEN_EXPIRATION * 60 * 1000) { // 토큰 만료시간 + if (inactiveTime > process.env.REACT_APP_TOKEN_EXPIRATION * 60 * 1000) { // 토큰 만료시간: REACT_APP_TOKEN_EXPIRATION 확인 logout(); toast.info('장시간 활동이 없어 로그아웃되었습니다.'); } @@ -237,7 +155,6 @@ useEffect(() => { const interval = setInterval(checkInactivity, 30000); // 30초마다 체크 return () => clearInterval(interval); }, [lastActivity]); - //-------------------------------- const login = (userData) => { setUser(userData); @@ -261,11 +178,6 @@ useEffect(() => { ); } -// function PrivateRoute({ children }) { -// const { isAuthenticated } = useAuth(); -// return isAuthenticated ? children : <Navigate to="/login" />; -// } - function PrivateRoute({ children }) { const { isAuthenticated } = useAuth(); const token = localStorage.getItem('token'); diff --git a/src/pages/Login.js b/src/pages/Login.js index 7b80c5eabaaa8f58061ade8b0dac7658e41f94c4..954f71d2f4653bc15e107826603e052f9226f2b2 100644 --- a/src/pages/Login.js +++ b/src/pages/Login.js @@ -18,7 +18,7 @@ function Login() { const toast = useToast(); - //jwt 전 로그인------------------------- + //세션 로그인------------------------- // useEffect(() => { // const params = new URLSearchParams(window.location.search); // const userParam = params.get('user'); @@ -35,7 +35,7 @@ function Login() { // } // } // }, [navigate, login, toast]); - //jwt 전 로그인------------------------- + //jwt 후 로그인------------------------- useEffect(() => { const params = new URLSearchParams(window.location.hash.substring(1)); @@ -59,10 +59,9 @@ function Login() { navigate('/'); } }, [navigate, login, toast]); - //jwt 후 로그인------------------------- - //jwt 전 로그인------------------------- + //세션 로그인------------------------- // const handleLogin = async (e) => { // e.preventDefault(); // setLoading(true); @@ -91,7 +90,6 @@ function Login() { // setLoading(false); // } // }; - //jwt 전 로그인------------------------- //jwt 후 로그인------------------------- // handleLogin 함수만 수정 @@ -100,22 +98,6 @@ const handleLogin = async (e) => { setLoading(true); try { - // const response = await axios.post('http://localhost:8000/login', { - // email: username, - // password: password - // }); - - // if (response.status === 200) { - // // JWT 토큰 저장 - // const { token, user } = response.data; - // localStorage.setItem('token', token); - // // axios 기본 헤더에 토큰 설정 - // axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; - - // login(user); - // toast.success('로그인에 성공했습니다.'); - // navigate('/'); - // } const response = await axios.post(`${API_URL}/login`, { email: username, password: password