將標識移動到類庫ASP.Net Core

asp.net-core asp.net-core-identity entity-framework-core

我開發了一個基於ASP.Net核心的新項目。我已將所有EF代碼(模型,映射,DbContext)移動到專用DAL類庫中,以遵循SOLID規則的單一責任原則。

但是,我現在需要在我的項目中添加身份驗證,並且需要將以下內容添加到我的Web項目的Startup.cs中,如不同的教程所示:

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

它將涉及添加Microsoft.AspNetCore.Identity.EntityFrameworkCore包,在我看來,我開始通過將此包包含到我的Web項目中來打破SRP規則。

是否可以將所有身份代碼(服務,模型)作為外部類庫移動,就像我為DAL所做的那樣。

熱門答案

由於身份代碼同時具有邏輯和UI(登錄/註銷,註冊等),因此它需要是一個Web應用程序。

IMO有兩種選擇:

  1. 將身份作為單獨的Web應用程序。由於Asp.Net Core Identity支持OAuth2(OAuth2支持代碼授予等交互式授權),因此在登錄/註冊過程中,用戶將被重定向到此Web應用程序端點。
  2. 將身份控制器與您的身份控制器相結合併將身份數據移動到您的DAL庫,請參閱: https//www.codeproject.com/Articles/1156558/ASP-NET-Core-Moving-IdentityDbContext-and-EF-model

如果SRP對您很重要,第一個選項可以提供更好的選擇。如果重定向到不同的URL對您來說似乎是糟糕的用戶體驗,那麼第二個選項可能會更好。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow