AuthContext๋ Context์ ์ผ๋ถ๋ก, ์ฌ์ฉ์ ์ธ์ฆ ์ํ์ ์ธ์
์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. better-auth๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค.
ํ์
์ ์
ํ์ฌ ์ธ์ฆ๋ ์ฌ์ฉ์ ์ ๋ณด์
๋๋ค. ๋ก๊ทธ์ธํ์ง ์์ ๊ฒฝ์ฐ 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 ํ์
์์ ์ฑ์ ์ํด ํ์
๋จ์ธ์ด ํ์ํฉ๋๋ค:
์ธ์ฆ ํ๋ฆ
- ํด๋ผ์ด์ธํธ๊ฐ
/api/auth/sign-in/email๋ก ๋ก๊ทธ์ธ ์์ฒญ
- better-auth๊ฐ ์ธ์ฆ ์ฒ๋ฆฌ ๋ฐ ์ธ์
์์ฑ
- ์ธ์
ํ ํฐ์ด ์ฟ ํค์ ์ ์ฅ๋จ
- ์ดํ ์์ฒญ์์ ์ฟ ํค์ ํ ํฐ์ผ๋ก ์ฌ์ฉ์ ์๋ณ
- API ๋ฉ์๋ ์คํ ์ Context์ user/session ์ฃผ์
Sonamu.getContext()๋ก ์ฌ์ฉ์ ์ ๋ณด ์ ๊ทผ
๊ด๋ จ ๋ฌธ์