3

Ich habe ein neues Projekt basierend auf ASP.Net Core entwickelt. Ich habe meinen gesamten EF-Code (Modelle, Mappings, DbContext) in eine dedizierte DAL-Klassenbibliothek verschoben, um dem Prinzip der einheitlichen Verantwortung der SOLID-Regeln zu folgen.Identity in eine Klassenbibliothek verschieben ASP.Net Core

Allerdings muss ich jetzt die Authentifizierung in mein Projekt hinzuzufügen und müsste folgendes in mein Startup.cs meiner Webprojekt hinzufügen, wie in verschiedenen Tutorials gezeigt:

services.AddIdentity<ApplicationUser, IdentityRole>() 
     .AddEntityFrameworkStores<ApplicationDbContext>() 
     .AddDefaultTokenProviders(); 

Es würde bedeuten, die Microsoft Hinzufügen .AspNetCore.Identity.EntityFrameworkCore-Paket und es scheint mir, dass ich die SRP-Regel zu brechen, indem dieses Paket in meinem Web-Projekt enthalten.

Wäre es möglich, den gesamten Identitätscode (Services, Modelle) wie eine externe Klassenbibliothek wie für die DAL zu verschieben.

+0

Ja, Sie können. Verschieben Sie das zu einer Erweiterungsmethode in der externen Bibliothek und rufen Sie es im Kompositionswurzel auf, bei dem es sich um das Webprojekt handelt. – Nkosi

+0

Seitdem ich versuche, das gleiche zu tun, habe es aber nicht herausgefunden. – Reza

Antwort

0

Da Identitätscode sowohl Logik als auch UI (Anmelden/Abmelden, Registrieren usw.) hat, muss es eine Web-App sein.

Es gibt zwei Möglichkeiten IMO:

  1. Make Identität als separaten Web-App. Da Asp.Net Core Identity OAuth2 unterstützt (OAuth2 unterstützt interaktive Interventionen wie Code-Grant), werden Benutzer während des Anmelde-/Registrierungsprozesses an diesen Web-App-Endpunkt weitergeleitet.
  2. Identität Controller mit Ihnen kombinieren und Identitätsdaten zu Ihrer DAL Bibliothek bewegen, sehen: https://www.codeproject.com/Articles/1156558/ASP-NET-Core-Moving-IdentityDbContext-and-EF-model

Die erste Option ermöglicht eine bessere Option, wenn SRP für Sie wichtig ist. Wenn die Weiterleitung an eine andere URL für Sie eine schlechte Nutzererfahrung darstellt, ist die zweite Option möglicherweise besser.

Verwandte Themen