๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - Iron Session

2025. 7. 4. 11:07ยท๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

Iron Session

 

โœ… Iron Session์ด๋ž€?


์„œ๋ช…, ์•”ํ˜ธํ™”๋œ ์ฟ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” NodeJS stateless ์„ธ์…˜ ๋„๊ตฌ

JWT์™€๋Š” ๋‹ค๋ฅด๋‹ค.

JWT๋Š” ์•”ํ˜ธํ™” ๋˜์ง€ ์•Š๊ณ  ์„œ๋ช…์ด ๋˜์—ˆ์„ ๋ฟ์ด๋‹ค.

JWT๋Š” ์œ ์ €์˜ id๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด์— ์„œ๋ช…ํ•˜๊ณ  ์ด ์„œ๋ช…๊ณผ ํ•จ๊ป˜ ์œ ์ €์—๊ฒŒ ํ† ํฐ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

(์œ ์ €๋Š” ํ† ํฐ์„ ๋ฐ›์•„์„œ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ค. JWT ํ† ํฐ ์•ˆ์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ํ›คํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์œ ์ €๊ฐ€ ์ด JWT๋ฅผ ๋ณด๋ƒˆ์„ ๋•Œ ์„œ๋ช…์„ ํ™•์ธํ•˜๊ณ  ํ•ด๋‹น ํ† ํฐ์„ ์‹ ๋ขฐํ•˜๋Š” ๋ฐฉ์‹)

 

โœ… ์ฟ ํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ 


1. ์œ ์ €๊ฐ€ ์•ˆ์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์ •๋ณด๋“  ๊ฐ„์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

2. ์„ธ์…˜์„ ์œ„ํ•œ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌ์ถ•ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

โœ… ์‚ฌ์šฉ๋ฒ•


npm i iron-session

 

์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ํ•จ์ˆ˜๋ฅผ withIronSessionApiRoute() ํ•จ์ˆ˜๋กœ ๊ฐ์‹ธ์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด iron session์ด ์•Œ์•„์„œ req.session.user๋ฅผ req ๊ฐ์ฒด ์•ˆ์— ๋‹ด์•„ ๋ณด๋‚ด์ค€๋‹ค.

 

โœ… ์˜ˆ์‹œ


import { withIronSessionApiRoute } from "iron-session/next";

declare module "iron-session" {
  interface IronSessionData {
    user?: {
      id: number;
    };
  }
}

const cookieOptions = {
  cookieName: "carrotsession",
  password: process.env.COOKIE_PASSWORD!,
};

export function withApiSession(fn: any) {
  return withIronSessionApiRoute(fn, cookieOptions);
}

 

์œ ์ € ์ •๋ณด๋ฅผ session์— ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด req.session.user์— ๋‹ด๊ณ , req.session.save()๋ฅผ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

'๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - TanStack Query(React Query)  (0) 2026.02.03
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - Zod  (0) 2025.12.03
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - SWR  (0) 2025.07.05
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - NextAuth  (0) 2025.07.04
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - React Hook Form  (2) 2025.05.27
'๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - Zod
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - SWR
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - NextAuth
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - React Hook Form
j2yonghwa
j2yonghwa
Trying to be a fullstack developer ๐Ÿš€
  • j2yonghwa
    j2yonghwa
    j2yonghwa
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (156)
      • โฐ Daily WakaTime (1)
      • ๐Ÿ–๏ธ ๋…ธ๋งˆ๋“œ์ฝ”๋” (2)
      • ๐Ÿบ Dev Setup (3)
      • ๐Ÿ”ญ Tech Info (1)
      • ๐Ÿšซ Error (1)
      • ๐Ÿ“‚ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (23)
      • ♣๏ธ Next.js 14 (10)
      • ♠๏ธ Next.js 12 (20)
      • ๐Ÿ›ธ React Native (12)
      • ๐Ÿฆ‹ TypeScript (1)
      • ๐Ÿ Python (2)
      • ๐ŸŒŠ TailwindCSS (4)
      • ๐Ÿงฉ SQL (25)
      • ๐Ÿ’Ž Prisma (5)
      • ๐ŸŒฑ MongoDB (4)
      • ๐ŸŽฏ Redis (1)
      • ๐Ÿงฌ GraphQL (2)
      • ๐Ÿ”ฅ Firebase (7)
      • ๐Ÿ’ธ Third-Party Services (2)
      • ๐Ÿ•ธ๏ธ Web (1)
      • ๐Ÿ† ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (23)
      • ๐Ÿ“™ ๋ชจ๋”ฅ๋‹ค (5)
      • ๐Ÿ“— ์ฝ”ํ…Œ ํ•ฉ๊ฒฉ์ž ๋˜๊ธฐ -JS- (0)
      • ๐Ÿ“˜ ํด๋ฆฐ์ฝ”๋“œ (0)
      • ๐Ÿฏ ๊ฟ€ํŒ ๐Ÿ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • ๊นƒํ—™
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    mongoDB
    Next.js
    0๋ ˆ๋ฒจ
    tailwindcss
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ž…๋ฌธ
    next.js 12
    MySQL
    next.js 14
    ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
    React Native
    PostgreSQL
    SQL
    react router
    Firebase
    dev setup
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    Python
    API
    Prisma
    ๋ชจ๋”ฅ๋‹ค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
j2yonghwa
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ - Iron Session
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”