Adicionando Features

Além do núcleo de APIs e frontends, projetos reais frequentemente exigem funcionalidades adicionais para garantir segurança, controle de acesso e execução de processos em segundo plano.


O Lino facilita a adição dessas capacidades de forma padronizada, refletindo tanto no backend (endpoints) quanto no frontend (aplicações Blazor).

Segurança e Autenticação

A autenticação é a base de qualquer sistema seguro. O Lino suporta autenticação baseada em JWT (JSON Web Tokens), utilizando o esquema Bearer nas APIs.

Fluxo de autenticação típico:

1. O usuário realiza login (via endpoint ou página dedicada).
2. Um JWT é emitido com claims representando identidade, roles e permissões.
3. Cada requisição à API inclui o token no header: Authorization: Bearer <token>
4. O middleware de autenticação valida o token, verificando assinatura e expiração.

Autorização baseada em Policies

O Lino utiliza Policies para implementar autorização granular:

  • Cada ação pode exigir uma Policy específica (ex.: People.Read, People.Create).
  • As policies são configuradas via AddAuthorization.
  • Endpoints podem ser protegidos declarando: .RequireAuthorization

Adicionando segurança a projetos Lino

Para adicionar segurança a um projeto, execute:

lino features auth add

O assistente interativo do CLI solicitará as seguintes configurações:

  • Serviço – serviço no qual os recursos de segurança serão configurados.
  • Módulo – módulo específico onde a segurança será instalada (aplicável apenas em serviços modulares).
  • Lifetime Access Token – tempo de vida do token de acesso.
  • Lifetime Refresh Token - tempo de vida do token de atualização.
  • Tipo de identificador do usuário - define o tipo de dado utilizado como UserId (int, long ou Guid).

Essas definições garantem que o pipeline de autenticação/autorização seja configurado automaticamente, pronto para uso em APIs e integrado ao Blazor.

Background Jobs

Muitos sistemas necessitam executar processos assíncronos em segundo plano, como:

  • Envio de emails
  • Geração de relatórios
  • Sincronização com sistemas externos.

O Lino oferece suporte nativo ao Hangfire como orquestrador de jobs.

Benefícios do Hangfire

  • Execução confiável de jobs assíncronos.
  • Painel de monitoramento embutido.
  • Suporte a jobs recorrentes ou agendados.
  • Persistência confiável de jobs no banco de dados.

Integração de Eventos com Outbox Message

Para garantir consistência em integrações assíncronas, o Lino adota o padrão Outbox Message.

Ao executar uma ação de negócio (ex.: criação de um pedido), o evento correspondente (OrderCreated) é salvo na tabela Outbox, na mesma transação que persiste o estado do domínio. Um processador em segundo plano lê a tabela Outbox e publica os eventos em sistemas de mensageria (RabbitMQ, Kafka, etc.).

Benefícios do Outbox:

  • Atomicidade → banco de dados e eventos publicados permanecem sincronizados.
  • Confiabilidade → nenhum evento é perdido, mesmo em caso de falha.
  • Escalabilidade → múltiplos consumidores podem processar os eventos.

Esse modelo garante integrações seguras e resilientes em arquiteturas distribuídas.

Com esses recursos adicionais, o Lino oferece segurança robusta, controle granular de acesso e processamento assíncrono confiável, atendendo requisitos críticos de aplicações modernas em produção.

Adicionando recursos de Background Job a projetos Lino

O processamento assíncrono é essencial para tarefas que não devem bloquear o fluxo principal de requisições, como envio de notificações, geração de relatórios ou publicação de eventos.

O Lino permite habilitar suporte a Background Jobs (via bibliotecas) com um único comando:

lino features background-job add

O CLI solicitará os seguintes parâmetros de configuração:

  • Serviço – serviço no qual o recurso de Background Job será adicionado.
  • Biblioteca – biblioteca escolhida para execução e agendamento de jobs.
  • Tempo de checagem e processamento - intervalo em que a fila será verificada para buscar novas mensagens Outbox.
  • Quantidade de registros - número máximo de registros processados por ciclo, controlando paralelismo e consumo de recursos.

Essas opções permitem que o sistema seja configurado de forma escalável e resiliente, garantindo execução confiável de tarefas em segundo plano.

Ocorreu um erro não tratado. Recarregar 🗙