Skip to main content
AuthContext๋Š” Context์˜ ์ผ๋ถ€๋กœ, ์‚ฌ์šฉ์ž ์ธ์ฆ ์ƒํƒœ์™€ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. better-auth๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ€์ž… ์ •์˜

์†์„ฑ

user

ํ˜„์žฌ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ null์ž…๋‹ˆ๋‹ค. User ํƒ€์ž…์€ better-auth์—์„œ ์ œ๊ณตํ•˜๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ ํ•„๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
์‚ฌ์šฉ ์˜ˆ์‹œ:

session

ํ˜„์žฌ ์„ธ์…˜ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ null์ž…๋‹ˆ๋‹ค. Session ํƒ€์ž…์€ better-auth์—์„œ ์ œ๊ณตํ•˜๋ฉฐ, ๋‹ค์Œ ํ•„๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค:
์‚ฌ์šฉ ์˜ˆ์‹œ:

์„ค์ •

AuthContext๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด sonamu.config.ts์—์„œ ์ธ์ฆ ์„ค์ •์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์„ค์ •

์†Œ์…œ ๋กœ๊ทธ์ธ ์ถ”๊ฐ€

Guards๋ฅผ ํ†ตํ•œ ์ ‘๊ทผ ์ œ์–ด

API ๋ฉ”์„œ๋“œ์— ์ธ์ฆ์„ ์š”๊ตฌํ•˜๋ ค๋ฉด guards ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
Guard ์ฒ˜๋ฆฌ ๋กœ์ง์€ guardHandler์—์„œ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค:
guardHandler๋Š” AsyncLocalStorage ๋‚ด๋ถ€์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ Sonamu.getContext()๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์š”์ฒญ์˜ Context์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

User ํƒ€์ž… ํ™•์žฅ

ํ”„๋กœ์ ํŠธ์—์„œ User ์—”ํ‹ฐํ‹ฐ์— ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ ๊ฒฝ์šฐ, Sonamu UI๋ฅผ ํ†ตํ•ด ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ํ•œ ํ•„๋“œ๋Š” user ๊ฐ์ฒด์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, TypeScript ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์œ„ํ•ด ํƒ€์ž… ๋‹จ์–ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:

์ธ์ฆ ํ๋ฆ„

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ /api/auth/sign-in/email๋กœ ๋กœ๊ทธ์ธ ์š”์ฒญ
  2. better-auth๊ฐ€ ์ธ์ฆ ์ฒ˜๋ฆฌ ๋ฐ ์„ธ์…˜ ์ƒ์„ฑ
  3. ์„ธ์…˜ ํ† ํฐ์ด ์ฟ ํ‚ค์— ์ €์žฅ๋จ
  4. ์ดํ›„ ์š”์ฒญ์—์„œ ์ฟ ํ‚ค์˜ ํ† ํฐ์œผ๋กœ ์‚ฌ์šฉ์ž ์‹๋ณ„
  5. API ๋ฉ”์„œ๋“œ ์‹คํ–‰ ์ „ Context์— user/session ์ฃผ์ž…
  6. Sonamu.getContext()๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด ์ ‘๊ทผ

๊ด€๋ จ ๋ฌธ์„œ