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,longoderGuid).
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.
