Exemplos RLS
Padrões práticos de Segurança em Nível de Linha para tipos comuns de aplicativos. Importante: O RLS da Base44 suporta:- Operadores lógicos:
$or,$and,$norpara combinar condições - Operadores de campo (para campos
data.*):$in,$nin,$ne,$all - user_condition: Apenas igualdade (sem operadores)
Conteúdo
- Padrões simples (JSON Schema)
- Usando operadores
- Exemplos de segurança em nível de campo
- Padrões complexos (UI do Dashboard ou Backend)
- Melhores práticas
Padrões simples (JSON Schema)
Estes padrões funcionam com o formato RLS de JSON schema.Aplicativo de tarefas - Acesso apenas do proprietário
Os usuários veem e gerenciam apenas suas próprias tarefas.Formulário de contato - Criação pública, leitura apenas de administrador
Qualquer um pode enviar, apenas administradores podem visualizar submissões.Perfil de usuário - Autogerenciamento
Os usuários só podem acessar seu próprio perfil.Dados de departamento - Acesso do mesmo departamento
Os usuários só podem ver registros do seu departamento.Assinatura - Gerenciada por admin, legível pelo usuário via campo de e-mail
Dados privados - Apenas proprietário
Leitura pública, escrita autenticada
Qualquer um pode ler, apenas usuários logados podem criar/editar seus próprios registros.Usando operadores
Operadores lógicos
Combine várias condições usando$or, $and ou $nor:
Acesso de proprietário OU administrador:
Operadores de campo para campos data.*
Use$in, $nin, $ne, $all para comparar campos de dados de entidade:
Acesso baseado em tags ($in):
Combinando operadores lógicos e de campo
Exemplos de segurança em nível de campo
Controle o acesso a campos específicos dentro de uma entidade.Campo de salário sensível
Campos internos apenas para admin
Padrões complexos (UI do Dashboard ou Backend)
Alguns padrões ainda podem exigir a UI do painel ou funções de backend.Relacionamentos bidirecionais (por exemplo, amizades, correspondências)
Requisito: Qualquer uma das partes em um relacionamento deve ter acesso. Agora possível com $or:- Redesign de entidade: Armazenar dois registros por relacionamento (um para cada parte)
- Função de backend: Consultar com lógica personalizada
Lógica de negócios complexa
Requisito: O acesso depende de vários campos de entidade com condições complexas. Limitação do JSON Schema: Embora os operadores ajudem, lógica de negócios muito complexa pode ainda ser difícil de expressar. Opções de solução:- Função de backend: Implementar lógica de acesso personalizada
- Combinar regras mais simples: Dividir regras complexas em regras mais simples de nível de entidade e nível de campo
Melhores práticas
Estratégia de segurança
Use uma combinação de RLS em nível de entidade e segurança em nível de campo:| Tipo de dados | Abordagem | Exemplo |
|---|---|---|
| Editável pelo usuário | RLS de entidade: apenas proprietário | UserProfile com verificação created_by |
| Campos sensíveis | RLS em nível de campo | Campo de salário com verificação de função HR |
| Acesso multi-função | $or com user_condition | Acesso Admin OU Manager |
| Acesso condicional | Operadores de campo | $in, $ne em campos de dados |
| Conteúdo público | RLS de entidade: read: true | PublicPost |
| Conteúdo privado | RLS de entidade: apenas proprietário | PrivateNote |
Quando usar cada abordagem
| Requisito | Abordagem |
|---|---|
| Condição única (proprietário, admin, departamento) | RLS de JSON Schema |
| Várias condições OR/AND | RLS de JSON Schema com $or/$and |
Verificações de valor de campo com $in/$ne/etc. | RLS de JSON Schema para campos data.* |
| Controle de acesso em nível de campo | FLS de JSON Schema (rls em nível de campo) |
Operadores de comparação complexos ($gt, $lt) | Funções de backend |
| Lógica de negócios muito complexa | Funções de backend |
Padrões comuns de função
| Função | Acesso típico |
|---|---|
admin | Acesso total a todos os registros |
moderator | Acesso de leitura/atualização, exclusão limitada |
manager | Acesso com escopo de departamento |
user | Apenas próprios registros |
Resumo dos operadores suportados
| Operador | Suportado | Notas |
|---|---|---|
$or | Sim | Combina várias condições |
$and | Sim | Todas as condições devem corresponder |
$nor | Sim | Nenhuma das condições corresponde |
$in | Sim | Apenas para campos data.* |
$nin | Sim | Apenas para campos data.* |
$ne | Sim | Apenas para campos data.* |
$all | Sim | Apenas para campos data.* |
$gt, $lt, $gte, $lte | Não | Use funções de backend |
$regex | Não | Use funções de backend |
Resumo de limitações
| Não suportado | Alternativa |
|---|---|
Operadores em user_condition | Use apenas igualdade para verificações de usuário |
Operadores de comparação ($gt, $lt) | Funções de backend |
Correspondência de regex ($regex) | Funções de backend |
| Relacionamentos entre entidades | Funções de backend |
Esta página foi traduzida usando IA. Para informações mais precisas e atualizadas, consulte a versão em inglês.

