typescriptintermediate

NextAuth Session Check Pattern

Check authentication status in Server Components and redirect unauthorized users with NextAuth.js.

typescript
import { getServerSession } from 'next-auth';
import { redirect } from 'next/navigation';
import { authOptions } from '@/lib/auth';

export async function requireAuth() {
  const session = await getServerSession(authOptions);
  if (!session?.user) redirect('/login');
  return session;
}

export async function requireRole(role: string) {
  const session = await requireAuth();
  if ((session.user as { role?: string }).role !== role) {
    redirect('/unauthorized');
  }
  return session;
}

// Usage in a page:
// export default async function DashboardPage() {
//   const session = await requireAuth();
//   return <Dashboard user={session.user} />;
// }

Sponsored

Try Clerk — Drop-in Auth for Next.js

Use Cases

  • Protected pages
  • Role-based access
  • Dashboard guards

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.