Ejemplos de RLS
Patrones prácticos de seguridad a nivel de fila para tipos de aplicaciones comunes. Importante: El RLS de Base44 admite:- Operadores lógicos:
$or,$and,$norpara combinar condiciones - Operadores de campo (para campos
data.*):$in,$nin,$ne,$all - user_condition: Solo igualdad (sin operadores)
Contenido
- Patrones simples (JSON Schema)
- Uso de operadores
- Ejemplos de seguridad a nivel de campo
- Patrones complejos (UI del panel o backend)
- Mejores prácticas
Patrones simples (JSON Schema)
Estos patrones funcionan con el formato RLS de esquema JSON.App de tareas - Acceso solo del propietario
Los usuarios ven y gestionan solo sus propias tareas.Formulario de contacto - Creación pública, lectura solo de administrador
Cualquiera puede enviar, solo los administradores pueden ver los envíos.Perfil de usuario - Autogestión
Los usuarios solo pueden acceder a su propio perfil.Datos de departamento - Acceso del mismo departamento
Los usuarios solo pueden ver registros de su departamento.Suscripción - Gestión de administrador, legible por usuario mediante campo de correo
Datos privados - Solo del propietario
Lectura pública, escritura autenticada
Cualquiera puede leer, solo usuarios registrados pueden crear/editar sus propios registros.Uso de operadores
Operadores lógicos
Combina múltiples condiciones usando$or, $and o $nor:
Acceso de propietario O administrador:
Operadores de campo para campos data.*
Usa$in, $nin, $ne, $all para comparar campos de datos de entidad:
Acceso basado en etiquetas ($in):
Combinar operadores lógicos y de campo
Ejemplos de seguridad a nivel de campo
Controla el acceso a campos específicos dentro de una entidad.Campo salary sensible
Campos internos solo de administrador
Patrones complejos (UI del panel o backend)
Algunos patrones aún pueden requerir la UI del panel o funciones de backend.Relaciones bidireccionales (por ejemplo, amistades, coincidencias)
Requisito: Cualquiera de las partes en una relación debe tener acceso. Ahora posible con $or:- Rediseño de entidad: Almacena dos registros por relación (uno para cada parte)
- Función de backend: Consulta con lógica personalizada
Lógica de negocio compleja
Requisito: El acceso depende de múltiples campos de entidad con condiciones complejas. Limitación del esquema JSON: Aunque los operadores ayudan, la lógica de negocio muy compleja aún puede ser difícil de expresar. Opciones de solución:- Función de backend: Implementa lógica de acceso personalizada
- Combina reglas más simples: Divide reglas complejas en reglas más simples a nivel de entidad y a nivel de campo
Mejores prácticas
Estrategia de seguridad
Usa una combinación de RLS a nivel de entidad y seguridad a nivel de campo:| Tipo de dato | Enfoque | Ejemplo |
|---|---|---|
| Editable por el usuario | RLS de entidad: solo propietario | UserProfile con comprobación created_by |
| Campos sensibles | RLS a nivel de campo | Campo salary con comprobación de rol HR |
| Acceso multi-rol | $or con user_condition | Acceso Admin O Manager |
| Acceso condicional | Operadores de campo | $in, $ne en campos de datos |
| Contenido público | RLS de entidad: read: true | PublicPost |
| Contenido privado | RLS de entidad: solo propietario | PrivateNote |
Cuándo usar cada enfoque
| Requisito | Enfoque |
|---|---|
| Condición única (propietario, admin, departamento) | RLS de esquema JSON |
| Múltiples condiciones OR/AND | RLS de esquema JSON con $or/$and |
Comprobaciones de valor de campo con $in/$ne/etc. | RLS de esquema JSON para campos data.* |
| Control de acceso a nivel de campo | FLS de esquema JSON (rls a nivel de campo) |
Operadores de comparación complejos ($gt, $lt) | Funciones de backend |
| Lógica de negocio muy compleja | Funciones de backend |
Patrones de roles comunes
| Rol | Acceso típico |
|---|---|
admin | Acceso total a todos los registros |
moderator | Acceso de lectura/actualización, eliminación limitada |
manager | Acceso limitado al departamento |
user | Solo sus propios registros |
Resumen de operadores admitidos
| Operador | Admitido | Notas |
|---|---|---|
$or | Sí | Combina múltiples condiciones |
$and | Sí | Todas las condiciones deben coincidir |
$nor | Sí | Ninguna de las condiciones coincide |
$in | Sí | Solo para campos data.* |
$nin | Sí | Solo para campos data.* |
$ne | Sí | Solo para campos data.* |
$all | Sí | Solo para campos data.* |
$gt, $lt, $gte, $lte | No | Usa funciones de backend |
$regex | No | Usa funciones de backend |
Resumen de limitaciones
| No admitido | Alternativa |
|---|---|
Operadores en user_condition | Usa solo igualdad para comprobaciones de usuario |
Operadores de comparación ($gt, $lt) | Funciones de backend |
Coincidencia con regex ($regex) | Funciones de backend |
| Relaciones entre entidades | Funciones de backend |
Esta página fue traducida usando IA. Para obtener la información más precisa y actualizada, consulta la versión en inglés.

