Features hinzufügen

Neben dem Kern von APIs und Frontends erfordern reale Projekte hĂ€ufig zusĂ€tzliche Funktionen, um Sicherheit, Zugriffskontrolle und die AusfĂŒhrung von Hintergrundprozessen zu gewĂ€hrleisten.


Lino erleichtert das HinzufĂŒgen dieser FĂ€higkeiten auf standardisierte Weise und spiegelt sie sowohl im Backend (Endpoints) als auch im Frontend (Blazor-Anwendungen) wider.

Sicherheit und Authentifizierung

Authentifizierung ist die Grundlage jedes sicheren Systems. Lino unterstĂŒtzt JWT (JSON Web Tokens) basierte Authentifizierung unter Verwendung des Bearer-Schemas in APIs.

Typischer Authentifizierungsablauf:

1. Der Benutzer meldet sich an (ĂŒber einen Endpunkt oder eine dedizierte Seite).
2. Ein JWT wird mit Claims ausgestellt, die IdentitÀt, Rollen und Berechtigungen darstellen.
3. Jede API-Anfrage enthÀlt das Token im Header: Authorization: Bearer <token>
4. Die Authentifizierungs-Middleware ĂŒberprĂŒft das Token, indem sie Signatur und Ablauf prĂŒft.

Rollen- und Richtlinienbasierte Autorisierung

Lino verwendet Policies, um eine granulare Autorisierung zu implementieren:

  • Jede Aktion kann eine spezifische Policy erfordern (z. B.: People.Read, People.Create).
  • Policies werden ĂŒber AddAuthorization konfiguriert.
  • Endpoints können geschĂŒtzt werden, indem sie deklarieren: .RequireAuthorization

Sicherheit zu Lino-Projekten hinzufĂŒgen

Um einem Projekt Sicherheit hinzuzufĂŒgen, fĂŒhren Sie aus:

lino features auth add

Der interaktive CLI-Assistent wird die folgenden Konfigurationen abfragen:

  • Service – der Service, in dem Sicherheitsressourcen konfiguriert werden.
  • Modul – spezifisches Modul, in dem die Sicherheit installiert wird (nur fĂŒr modulare Services anwendbar).
  • Lebensdauer des Access Tokens – GĂŒltigkeitsdauer des Zugriffstokens.
  • Lebensdauer des Refresh Tokens – GĂŒltigkeitsdauer des Aktualisierungstokens.
  • Typ des Benutzeridentifikators – legt den Datentyp fest, der als UserId verwendet wird (int, long oder Guid).

Diese Einstellungen stellen sicher, dass die Authentifizierungs-/Autorisierungspipeline automatisch konfiguriert wird, bereit zur Nutzung in APIs und integriert in Blazor.

Hintergrundaufgaben

Viele Systeme mĂŒssen asynchrone Prozesse im Hintergrund ausfĂŒhren, wie z. B.:

  • E-Mail-Versand
  • Berichtserstellung
  • Synchronisation mit externen Systemen.

Lino bietet native UnterstĂŒtzung fĂŒr Hangfire als Job-Orchestrator.

Vorteile von Hangfire

  • ZuverlĂ€ssige AusfĂŒhrung von asynchronen Jobs.
  • Eingebautes Überwachungs-Dashboard.
  • UnterstĂŒtzung fĂŒr wiederkehrende oder geplante Jobs.
  • ZuverlĂ€ssige Persistenz der Jobs in der Datenbank.

Ereignisintegration mit Outbox Message

Um Konsistenz bei asynchronen Integrationen zu gewÀhrleisten, verwendet Lino das Outbox-Message-Muster.

Beim AusfĂŒhren einer GeschĂ€ftsaktion (z. B. Erstellung einer Bestellung) wird das entsprechende Ereignis (OrderCreated) in der Outbox-Tabelle gespeichert, in derselben Transaktion, die den DomĂ€nenzustand persistiert. Ein Hintergrundprozessor liest die Outbox-Tabelle und veröffentlicht die Ereignisse in Messaging-Systeme (RabbitMQ, Kafka usw.).

Vorteile der Outbox:

  • AtomaritĂ€t → Datenbank und veröffentlichte Ereignisse bleiben synchron.
  • ZuverlĂ€ssigkeit → Kein Ereignis geht verloren, selbst bei einem Ausfall.
  • Skalierbarkeit → Mehrere Consumer können die Ereignisse verarbeiten.

Dieses Modell gewÀhrleistet sichere und resiliente Integrationen in verteilten Architekturen.

Mit diesen zusĂ€tzlichen Funktionen bietet Lino robuste Sicherheit, granulare Zugriffskontrolle und zuverlĂ€ssige asynchrone Verarbeitung und erfĂŒllt die kritischen Anforderungen moderner Produktionsanwendungen.

HinzufĂŒgen von Background-Job-Funktionen zu Lino-Projekten

Asynchrone Verarbeitung ist essenziell fĂŒr Aufgaben, die den Hauptanfragefluss nicht blockieren dĂŒrfen, wie Benachrichtigungen, Berichtserstellung oder Event-Publishing.

Lino ermöglicht das Aktivieren der UnterstĂŒtzung fĂŒr Background Jobs (ĂŒber Bibliotheken) mit nur einem Befehl:

lino features background-job add

Das CLI fordert die folgenden Konfigurationsparameter an:

  • Service – der Service, in dem die Background-Job-Funktion hinzugefĂŒgt wird.
  • Bibliothek – ausgewĂ€hlte Bibliothek fĂŒr die AusfĂŒhrung und Planung von Jobs.
  • PrĂŒf- und Verarbeitungsintervall – Intervall, in dem die Warteschlange auf neue Outbox-Nachrichten ĂŒberprĂŒft wird.
  • Anzahl der DatensĂ€tze – maximale Anzahl der pro Zyklus verarbeiteten DatensĂ€tze zur Steuerung von ParallelitĂ€t und Ressourcenverbrauch.

Diese Optionen ermöglichen eine skalierbare und resiliente Konfiguration des Systems und gewĂ€hrleisten die zuverlĂ€ssige AusfĂŒhrung von Hintergrundaufgaben.

Ein unbehandelter Fehler ist aufgetreten. Aktualisieren 🗙