馃敀 Autenticaci贸n de usuarios y protecci贸n de rutas

Next.js Autenticaci贸n

馃敀 Autenticaci贸n de usuarios y protecci贸n de rutas

Aprende a proteger partes de tu blog usando autenticaci贸n y control de acceso en Next.js.


馃搶 脥ndice de esta entrada:

  1. 馃洜️ Introducci贸n a la autenticaci贸n
  2. 馃摝 Instalaci贸n de NextAuth.js
  3. ⚙️ Configuraci贸n de proveedores de login
  4. 馃攽 Proteger p谩ginas y rutas
  5. 馃摑 Ejemplo pr谩ctico: p谩gina de administraci贸n
  6. 馃挕 Buenas pr谩cticas de seguridad

馃洜️ Introducci贸n a la autenticaci贸n

La autenticaci贸n permite controlar qui茅n puede acceder a ciertas p谩ginas de tu blog. Por ejemplo, solo los administradores deber铆an poder crear o borrar publicaciones.

馃摝 Instalaci贸n de NextAuth.js

NextAuth.js es la librer铆a m谩s popular para autenticaci贸n en Next.js. Permite login con correo/contrase帽a, Google, GitHub y m谩s.

npm install next-auth
# o con yarn
yarn add next-auth
    

⚙️ Configuraci贸n de proveedores de login

Vamos a crear un archivo /pages/api/auth/[...nextauth].js:

import NextAuth from "next-auth";
import GoogleProvider from "next-auth/providers/google";

export const authOptions = {
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
    }),
  ],
  secret: process.env.NEXTAUTH_SECRET,
};

export default NextAuth(authOptions);
    

Aseg煤rate de tener tus credenciales de Google en un archivo .env.local.

馃攽 Proteger p谩ginas y rutas

Para proteger una p谩gina podemos usar el hook useSession de NextAuth:

import { useSession } from "next-auth/react";

export default function AdminPage() {
  const { data: session } = useSession();

  if (!session) return <p>Acceso denegado. Por favor, inicia sesi贸n.</p>;

  return <div>
    <h1>Panel de Administraci贸n</h1>
  </div>;
}
    

Esto asegura que solo usuarios autenticados puedan ver la p谩gina.

馃摑 Ejemplo pr谩ctico: p谩gina de administraci贸n

Puedes crear un bot贸n de login y logout con NextAuth:

import { signIn, signOut, useSession } from "next-auth/react";

export default function Navbar() {
  const { data: session } = useSession();

  return <nav>
    {session ? (
      <>
        <span>Hola, {session.user.name}</span>
        <button onClick={() => signOut()}>Salir</button>
      </>
    ) : (
      <button onClick={() => signIn()}>Iniciar sesi贸n</button>
    )}
  </nav>;
}
    

馃挕 Buenas pr谩cticas de seguridad

  • Usa HTTPS siempre.
  • No expongas tus credenciales en el repositorio.
  • Protege las rutas de API tambi茅n, no solo las p谩ginas.
  • Usa sesiones cortas y refresca tokens regularmente.

馃挕 Consejo: La autenticaci贸n es clave para proteger tu contenido y usuarios. NextAuth facilita mucho la integraci贸n con Next.js.

Publicar un comentario

0 Comentarios