3 de junio de 2026
8 min de lectura
Permisos y roles en Strapi: estructura segura desde el inicio del proyecto
Cómo configurar el sistema RBAC de Strapi para proyectos con múltiples tipos de usuario, proteger rutas y campos, y evitar errores comunes de acceso.
Read in EnglishEl sistema RBAC de Strapi y sus dos capas
Strapi tiene dos sistemas de permisos separados: el de la Content API (para usuarios del frontend o clientes de la API) y el del Admin Panel (para los editores y administradores). Son independientes y se configuran por separado. Un usuario de la API no tiene acceso al admin, y viceversa.
El sistema de la Content API usa roles: Public (sin autenticación) y Authenticated (con JWT). En Strapi v4 y v5 con licencia gratuita, estos son los únicos dos roles disponibles para la API. La licencia Enterprise agrega RBAC granular. Para la mayoría de proyectos, la diferenciación se hace con middleware personalizado.
Qué puede acceder cada rol y cómo ajustarlo
El rol Public no debería tener acceso a ningún endpoint por defecto. Es un error común dejar el rol Public con permisos de find y findOne en colecciones que requieren autenticación. Strapi no restringe nada por defecto; hay que configurar explícitamente qué puede hacer cada rol en Settings > Roles.
El rol Authenticated tiene acceso a lo que se le otorga explícitamente. Para un ecommerce, los usuarios autenticados pueden ver sus propios pedidos y actualizar su perfil, pero no deberían poder ver los pedidos de otros usuarios. Esa restricción no se logra solo con el sistema de roles; necesita middleware que filtre por el usuario autenticado.
- Audita el rol Public al inicio: no debe tener más permisos de los necesarios.
- Usa Authenticated solo para endpoints que requieren login.
- Documenta qué endpoints son públicos para que la decisión sea explícita.
Middleware personalizado para lógica de acceso específica
Cuando la lógica de acceso va más allá de autenticado/no autenticado — por ejemplo, "solo el dueño del recurso puede modificarlo" — se necesita middleware personalizado. En Strapi, ese middleware se agrega a nivel de ruta en el archivo de rutas de la API.
El patrón más común es verificar que el ID del usuario autenticado coincide con el campo `author` del recurso antes de ejecutar el controlador. Si no coincide, se devuelve un 403 antes de que el controlador acceda a la base de datos.
Middleware de verificación de ownership para rutas de la Content API.
// src/middlewares/is-owner.js
module.exports = (config, { strapi }) => {
return async (ctx, next) => {
const { id } = ctx.params;
const userId = ctx.state.user?.id;
if (!userId) {
return ctx.unauthorized('Authentication required');
}
const entity = await strapi.entityService.findOne(
config.contentType,
id,
{ populate: { author: { fields: ['id'] } } },
);
if (!entity || entity.author?.id !== userId) {
return ctx.forbidden('Access denied');
}
await next();
};
}; Errores frecuentes al configurar permisos
El error más frecuente es confiar solo en el sistema de roles del panel y no validar el ownership a nivel de middleware. Un usuario autenticado con acceso al endpoint de update puede modificar cualquier registro si no existe verificación adicional. Strapi no hace esa verificación automáticamente.
Otro error es no revisar los permisos después de agregar un nuevo tipo de contenido. Cuando se crea una colección nueva, sus endpoints no tienen permisos por defecto. Si hay un rol con permisos globales, la colección nueva puede quedar accesible sin intención. Revisar los roles después de cada cambio en el modelo es un hábito que evita fugas de datos.
Más artículos
Volver a artículosPlataformas de pago en México: Stripe, Conekta, Mercado Pago y OpenPay
Comparativa técnica y comercial de las cuatro plataformas más usadas para aceptar pagos en proyectos digitales mexicanos.
3 de junio de 2026
7 min de lectura
Plataformas de envíos en México: Skydropx, EnviosPerros, Pakke y Enviame
Cómo elegir entre los principales agregadores de paquetería para ecommerce en México según volumen, operación y necesidades técnicas.
3 de junio de 2026
7 min de lectura
CMS headless en 2026: PayloadCMS, Strapi, Sanity y Directus
Qué CMS headless elegir según el tipo de proyecto, el control técnico que necesitas y cómo planeas modelar el contenido.
3 de junio de 2026
8 min de lectura