20 - 馃懁 Autorizaci贸n basada en roles
Aprende a controlar el acceso a ciertas secciones de tu aplicaci贸n Next.js seg煤n el rol del usuario.
馃攽 ¿Qu茅 es la autorizaci贸n basada en roles?
La autorizaci贸n basada en roles permite definir qu茅 usuarios pueden acceder a determinadas rutas o funcionalidades de la aplicaci贸n seg煤n su rol. Com煤nmente se usa junto a NextAuth.js para validar sesiones y permisos.
⚙️ Ejemplo de roles en la sesi贸n
Supongamos que guardamos el rol del usuario en la sesi贸n al iniciar sesi贸n:
{
user: {
name: "Juan",
email: "juan@correo.com",
role: "admin" // roles posibles: admin, editor, visitante
}
}
馃洝️ Middleware para autorizaci贸n por roles
Podemos crear un middleware que bloquee rutas seg煤n el rol:
// middleware.js
import { getToken } from "next-auth/jwt";
import { NextResponse } from "next/server";
export async function middleware(req) {
const token = await getToken({ req, secret: process.env.NEXTAUTH_SECRET });
const url = req.nextUrl.clone();
// Redirigir si no est谩 autenticado
if (!token) {
url.pathname = "/login";
return NextResponse.redirect(url);
}
// Bloquear acceso si no es admin
if (url.pathname.startsWith("/admin") && token.role !== "admin") {
url.pathname = "/unauthorized";
return NextResponse.redirect(url);
}
return NextResponse.next();
}
export const config = {
matcher: ["/admin/:path*", "/dashboard/:path*"]
};
馃挕 Explicaci贸n:
- Se verifica el token de la sesi贸n con
getToken. - Si el usuario intenta acceder a
/adminy no tiene rol admin, se redirige a/unauthorized. - El
matcherdefine las rutas donde se aplica esta protecci贸n.
馃枼️ Protecci贸n de componentes seg煤n rol
Adem谩s, en el frontend podemos condicionar la renderizaci贸n:
import { useSession } from "next-auth/react";
export default function AdminPanel() {
const { data: session } = useSession();
if (!session) return <p>Cargando...</p>;
if (session.user.role !== "admin") return <p>No tienes permisos para acceder.</p>;
return (
<div>
<h1>Panel de Administraci贸n</h1>
<p>Bienvenido, {session.user.name}</p>
</div>
);
}
馃挕 Combinando Middleware y validaciones en componentes, aseguramos que s贸lo usuarios con el rol correcto puedan acceder.
✅ Resumen
- 馃懁 La autorizaci贸n por roles controla el acceso a rutas y funcionalidades seg煤n el rol del usuario.
- 馃洝️ Middleware + Frontend garantiza seguridad completa.
- ⚡ Roles comunes:
admin,editor,visitante. - 馃敆 Siempre redirige o muestra mensaje de acceso denegado a quienes no cumplan los permisos.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias