Felipe Moacir

Auth.js (NextAuth v5): Autenticação sem Dor

SecurityAuthNext.js
Auth.js (NextAuth v5): Autenticação sem Dor

Autenticação é difícil. Cookies, CSRF, Sessões, Encriptação... Implementar isso do zero é pedir para ser hackeado.

O Auth.js (antigo NextAuth) abstrai tudo isso. Na versão 5, ele se tornou agnóstico a framework (roda em Svelte, Vue, etc), mas a integração com Next.js continua perfeita.

Configuração Básica

Tudo gira em torno do arquivo auth.ts.

import NextAuth from "next-auth"
import GitHub from "next-auth/providers/github"

export const { auth, handlers, signIn, signOut } = NextAuth({
  providers: [GitHub],
  callbacks: {
    authorized: async ({ auth }) => {
      // Logica de proteção de rotas (Middleware)
      return !!auth
    },
  },
})

Protegendo Rotas (Middleware)

No Next.js, não precisamos verificar sessão em cada página. O Middleware faz isso globalmente.

export { auth as middleware } from "@/auth"

Acesso no Server Component

import { auth } from "@/auth"

export default async function Page() {
  const session = await auth()
  if (!session) return <p>Acesso Negado</p>
  
  return <p>Olá, {session.user.name}</p>
}

Simples, tipado e seguro por padrão.