Aggiunta di funzionalità

Oltre al nucleo di API e frontend, i progetti reali richiedono spesso funzionalitĂ  aggiuntive per garantire sicurezza, controllo degli accessi ed esecuzione di processi in background.


Lino facilita l’aggiunta di queste capacità in modo standardizzato, riflettendole sia nel backend (endpoint) sia nel frontend (applicazioni Blazor).

Sicurezza e Autenticazione

L'autenticazione è la base di qualsiasi sistema sicuro. Lino supporta l'autenticazione basata su JWT (JSON Web Tokens), utilizzando lo schema Bearer nelle API.

Flusso tipico di autenticazione:

1. L'utente effettua il login (tramite endpoint o pagina dedicata).
2. Viene emesso un JWT con claims che rappresentano identitĂ , ruoli e permessi.
3. Ogni richiesta all'API include il token nell'header: Authorization: Bearer <token>
4. Il middleware di autenticazione valida il token, verificando firma e scadenza.

Autorizzazione basata su Policy

Lino utilizza le Policy per implementare un'autorizzazione granulare:

  • Ogni azione può richiedere una Policy specifica (es.: People.Read, People.Create).
  • Le policy sono configurate tramite AddAuthorization.
  • Gli endpoint possono essere protetti dichiarando: .RequireAuthorization

Aggiungere sicurezza ai progetti Lino

Per aggiungere sicurezza a un progetto, eseguire:

lino features auth add

La procedura guidata interattiva della CLI richiederĂ  le seguenti configurazioni:

  • Servizio – servizio in cui verranno configurate le risorse di sicurezza.
  • Modulo – modulo specifico in cui verrĂ  installata la sicurezza (applicabile solo ai servizi modulari).
  • Durata Access Token – tempo di validitĂ  del token di accesso.
  • Durata Refresh Token – tempo di validitĂ  del token di aggiornamento.
  • Tipo di identificatore utente – definisce il tipo di dato utilizzato come UserId (int, long o Guid).

Queste impostazioni garantiscono che la pipeline di autenticazione/autorizzazione sia configurata automaticamente, pronta all'uso nelle API e integrata in Blazor.

Job in Background

Molti sistemi necessitano di eseguire processi asincroni in background, come:

  • Invio di email
  • Generazione di report
  • Sincronizzazione con sistemi esterni.

Lino offre supporto nativo a Hangfire come orchestratore dei job.

Vantaggi di Hangfire

  • Esecuzione affidabile dei job asincroni.
  • Pannello di monitoraggio integrato.
  • Supporto a job ricorrenti o pianificati.
  • Persistenza affidabile dei job nel database.

Integrazione degli eventi con Outbox Message

Per garantire coerenza nelle integrazioni asincrone, Lino adotta il pattern Outbox Message.

Quando viene eseguita un’azione di business (es.: creazione di un ordine), l’evento corrispondente (OrderCreated) viene salvato nella tabella Outbox, nella stessa transazione che persiste lo stato del dominio. Un processore in background legge la tabella Outbox e pubblica gli eventi nei sistemi di messaggistica (RabbitMQ, Kafka, ecc.).

Vantaggi dell’Outbox:

  • AtomicitĂ  → database ed eventi pubblicati rimangono sincronizzati.
  • AffidabilitĂ  → nessun evento viene perso, anche in caso di errore.
  • ScalabilitĂ  → piĂš consumatori possono elaborare gli eventi.

Questo modello garantisce integrazioni sicure e resilienti nelle architetture distribuite.

Con queste funzionalitĂ  aggiuntive, Lino offre sicurezza robusta, controllo granulare degli accessi e elaborazione asincrona affidabile, soddisfacendo i requisiti critici delle applicazioni moderne in produzione.

Aggiungere funzionalitĂ  di Background Job ai progetti Lino

L’elaborazione asincrona è essenziale per attività che non devono bloccare il flusso principale delle richieste, come invio di notifiche, generazione di report o pubblicazione di eventi.

Lino permette di abilitare il supporto ai Background Job (tramite librerie) con un singolo comando:

lino features background-job add

Il CLI richiederĂ  i seguenti parametri di configurazione:

  • Servizio – servizio in cui verrĂ  aggiunta la funzionalitĂ  di Background Job.
  • Libreria – libreria scelta per l’esecuzione e la pianificazione dei job.
  • Intervallo di controllo e processamento - intervallo in cui la coda viene controllata per cercare nuovi messaggi Outbox.
  • Numero di record - numero massimo di record processati per ciclo, controllando il parallelismo e il consumo di risorse.

Queste opzioni consentono di configurare il sistema in modo scalabile e resiliente, garantendo l’esecuzione affidabile dei job in background.

Si è verificato un errore non gestito. Ricarica 🗙