소셜 로그인을 구현한 후에 로그인 유무에 따라 사용자가 볼 수 있는 페이지, 볼 수 없는 페이지를 구분하는 작업을 진행하기로 했다. 로그인 Modal Redner 제작, 비 로그인 유저 url 접근 금지 작업이 있었고 오늘은 비 로그인 유저 url 접근 금지 작업
을 왜 진행했고 어떻게 작업했는지 포스팅하려고 한다!
import { useRouter } from 'next/router';
import { useEffect } from 'react';
import { useRecoilValue } from 'recoil';
import { isAuthorizedSelector } from '@/recoil/auth';
interface AuthRequiredPageProps {
children: React.ReactNode;
}
const AuthRequiredPage = ({ children }: AuthRequiredPageProps) => {
const isAuthorized = useRecoilValue(isAuthorizedSelector);
const router = useRouter();
useEffect(() => {
if (!isAuthorized) router.push('/');
}, [isAuthorized, router]);
return <>{children}</>;
};
export default AuthRequiredPage;
const isAuthorized = useRecoilValue(isAuthorizedSelector);
=> 로그인 여부 데이터(boolean)를 isAuthorized에 할당if (!isAuthorized) router.push('/');
=> 비 로그인 상태라면 홈으로 Redirectreturn <>{children}</>;
=> 비 로그인 유저가 접근 하면 안되는 컴포넌트를 해당 컴포넌트의 하위 컴포넌트로 설정import AuthRequiredPage from '../auth/AuthRequiredPage';
...
return (
<AuthRequiredPage>
기존 컴포넌트
</AuthRequiredPage>
잘 봤습니다. 좋은 글 감사합니다.