250x250
๋ฐ˜์‘ํ˜•
arkhyeon
arkhyeon
arkhyeon
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (88)
    • Spring (5)
    • Java (4)
    • React (25)
      • TypeScript (6)
      • JavaScript (1)
      • Jest (9)
    • NEXT (8)
    • SQL (1)
    • React native (1)
    • CSS (3)
    • Web (1)
    • Git (3)
    • ETC (6)
    • ๋น…๋ฐ์ดํ„ฐDB (8)
    • Docker (4)
    • Tool (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • HIVE
  • react websocket
  • websocket server
  • react jest
  • WSS
  • react spring websocket
  • websocket
  • react loading
  • node WebSocket
  • javascript wss
  • jest
  • react
  • react typescript
  • usetransition
  • kudu
  • javasciprt websocket
  • react19
  • docker tomcat
  • react usetransition
  • Spring WebSocket

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
arkhyeon

arkhyeon

NEXT

NextJs Next-auth getSession() ๋กœ๊ทธ์ธ ์ •๋ณด ํ™•์ธ

2024. 7. 23. 17:47
728x90
๋ฐ˜์‘ํ˜•
 

Client API | NextAuth.js

The NextAuth.js client library makes it easy to interact with sessions from React applications.

next-auth.js.org

๐Ÿ’ก getSession() ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์œ„ ๋ฌธ์„œ์™€ ๊ฐ™์ด ์„ค์ •ํ–ˆ์Œ์—๋„ 2๊ฐ€์ง€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ Session ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์—๋Ÿฌ์—†์ด ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
1. api/auth/session 400 ์—๋Ÿฌ ( GET http://localhost:3000/api/auth/session 400)
2. ClientFetchError: Unexpected token '<', "<!DOCTYPE </aside>

SessionProvider ์„ค์ •

MetaData ์‚ฌ์šฉ์„ ์œ„ํ•ด SessionProvider๋Š” ์ปดํฌ๋„ŒํŠธ๋กœ ์ƒ์„ฑ

// RootLayout layout.tsx
export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode
}>) {
  return (
    <html lang="en">
      <body className={inter.className}>
        <Session>{children}</Session>
      </body>
    </html>
  )
}
// Session.tsx
'use client'
import React from 'react'
import { SessionProvider } from 'next-auth/react'

function Session({ children }: { children: React.ReactNode }) {
  return <SessionProvider>{children}</SessionProvider>
}

export default Session

Next Auth ์„ค์ •

// auth.ts
export const { handlers, auth, signIn, signOut } = NextAuth({
	...authConfig,
})
export const authConfig = {
    jwt: async ({ user, token, account }) => {
      if (user) {
        token.uid = user.id
      }
      return token
    },
    session: async ({ session, token }) => {
      if (session?.user) {
        if (token.sub != null) {
          session.user.id = token.sub
        }
      }
      return session
    },
  },
  session: {
    strategy: 'jwt',
  },
} satisfies NextAuthConfig

ENV ์„ค์ •

# `openssl rand -base64 32`
NEXTAUTH_SECRET=Aa0Mv3ckdtLyMRjSBU9PLDNPCUY0FN94w1iPOq1rANw=
AUTH_URL=http://localhost:3000/api/auth

[…nextauth] ์„ค์ •

ํ•ด๋‹น ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. api/auth/session 400 ์—๋Ÿฌ ( GET http://localhost:3000/api/auth/session 400)
  2. ClientFetchError: Unexpected token '<', "<!DOCTYPE </aside>

[...nextauth]๋Š” ๋™์  ๊ฒฝ๋กœ๋กœ, NextAuth.js์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค์ •๋˜๋ฉฐ getSession()์ด ์„ธ์…˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด /api/auth/session์— GET ์š”์ฒญํ–ˆ๊ธฐ์— ํ•ด๋‹น ์„ค์ •์€ ๊ธฐ๋ณธ ์—”๋“œํฌ์ธํŠธ์—์„œ ํŠน์ • ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค

// app/api/auth/[...nextauth]/route.ts
import { handlers } from '@/auth'

export const { GET, POST } = handlers

Session ํ™•์ธ

'use client'
import { useSession } from 'next-auth/react'

export default function ProfileForm() {
  const { data: session, status, update } = useSession()
  
  if (!session?.user) return null
  
  return (<div>{session.user.id}</div>)
}
728x90
๋ฐ˜์‘ํ˜•

'NEXT' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

NEXT JS + Google Analytics Connect Setting  (0) 2024.08.07
Parallel Routes Modal Difficult Error  (0) 2024.07.25
NEXT 14 NEXT-AUTH 5 middleware.ts not working  (0) 2024.07.11
NextJS Prisma PostgreSQL ์—ฐ๊ฒฐ ๋ฐ Migrate  (0) 2024.07.09
next-themes Hydration failed Error  (0) 2024.05.31
    'NEXT' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • NEXT JS + Google Analytics Connect Setting
    • Parallel Routes Modal Difficult Error
    • NEXT 14 NEXT-AUTH 5 middleware.ts not working
    • NextJS Prisma PostgreSQL ์—ฐ๊ฒฐ ๋ฐ Migrate
    arkhyeon
    arkhyeon

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