Loading...
Loading...
Loading...
เปรียบเทียบ Server session (auth()) กับ Client session (useSession()) — ลอง login/logout ดูผลลัพธ์
// Server Component (page.tsx, layout.tsx)
import { auth } from '@/lib/auth/auth';
export default async function Page() {
const session = await auth();
// session อาจเป็น null ถ้าไม่ได้ login
// session.user.id, .name, .email, .role
// session.error — 'RefreshTokenError' ถ้า token หมดอายุ
}'use client';
import { useSession } from 'next-auth/react';
export function SessionDisplay() {
const { data: session, status, update } = useSession();
// status: 'loading' | 'authenticated' | 'unauthenticated'
// data: Session | null
// update: (data?) => Promise<Session | null>
if (status === 'loading') return <p>Loading...</p>;
if (status === 'unauthenticated') return <p>Not logged in</p>;
return <pre>{JSON.stringify(session, null, 2)}</pre>;
}// ✅ Server Component — ใช้ auth()
// - ไม่เพิ่ม JS bundle
// - SEO-friendly (render บน server)
// - ใช้ได้ใน page.tsx, layout.tsx, Server Action
// ✅ Client Component — ใช้ useSession()
// - ต้องมี SessionProvider ครอบ
// - React ต่อ session change (login/logout)
// - แสดง loading state ได้
// ❌ ห้าม
// - ใช้ useSession() ใน Server Component
// - ใช้ auth() ใน Client Component
// - เก็บ session ใน Zustand / localStorage