구현된 github
TEST Site
ID와 PW는 임시로 구성하였기 때문에 깃헙 Readed.md참고해주시길 바랍니다.
Next.js 애플리케이션에서 사용자 인증 및 세션 관리를 구현한 서버 사이드 코드입니다. 그리고 사용자 인증 및 세션 관리를 구현하는 예시하기 위해서 만들었습니다.
Next.js와 React를 사용하는 개발자들에게 이 코드는 안전하고 효율적인 인증 시스템을 구축하는 데 있어 훌륭한 시작점이 될 것입니다. 복잡한 인증 로직을 간소화하면서도 필요한 모든 핵심 기능을 포함하고 있어, 개발 시간을 단축하고 보안을 강화하는 데 도움이 될 것이라고 생각합니다.
코드에 대해 설명하고 싶지만 직접보는 부분이 더 좋다고 생각하여 자료를 만들면서 제가 iron-session을 사용한 이유와 주요 기능들에 대해 초점을 맞춰 설명드리겠습니다.
export const getSession = async () => {
const session = await getIronSession<SessionData>(cookies(), sessionOptions);
if (!session.isLoggedIn) {
session.isLoggedIn = defaultSession.isLoggedIn;
}
// CHECK THE USER IN THE DB
session.isBlocked = isBlocked;
session.isPro = isPro;
return session;
};
session.isBlocked = isBlocked; 이 코드는 세션 객체에 사용자의 차단 상태를 설정하는 역할을 합니다. 이를 통해 애플리케이션은 사용자가 차단되었는지 여부를 세션을 통해 확인할 수 있습니다.
이 설정은 사용자 인증 및 권한 관리에 중요한 역할을 합니다.
iron-session을 사용하여 session을 관리하였습니다.
iron-session을 사용한 이유는 다음과 같습니다.
export const logout = async () => {
const session = await getSession();
session.destroy();
redirect("/");
};
export const changePremium = async () => {
const session = await getSession();
isPro = !session.isPro;
session.isPro = isPro;
await session.save();
revalidatePath("/profile");
};