asp.net-core - 将身份移至类库 ASP.Net Core

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

我开发了一个基于ASP.Net core的新项目。 我已将所有 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. 将 Identity 作为一个单独的网络应用程序。由于 Asp.Net Core Identity 支持 OAuth2(OAuth2 支持交互式授权,例如代码授权),因此用户将在登录/注册过程中被重定向到此 Web 应用端点。
  2. 将身份 Controller 与您的身份 Controller 相结合,并将身份数据移至您的 DAL 库,请参阅:https://www.codeproject.com/Articles/1156558/ASP-NET-Core-Moving-IdentityDbContext-and-EF-model

如果 SRP 对您很重要,第一个选项会是更好的选择。如果重定向到不同的 URL 对您来说似乎是一种糟糕的用户体验,那么第二个选项可能会更好。

关于asp.net-core - 将身份移至类库 ASP.Net Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41627510/

相关文章:

asp.net-core - .NET Core Identity 与 IdentityServer4

c# - 仅授权 ASP.NET Core 中的某些 Http 方法

javascript - 使用 JSInterop 将对象传递给 JavaScript 结果为空对象

c# - 使用 C# 仅获取 JSON 的一部分

c# - EF Core 中使用 Fluent API 的一对一关系

c# - 将委托(delegate)传递给 EF Core 中的 linq 查询

asp.net-core - 包 Microsoft.AspNetCore.Authentication.JwtBearer 5.0.0 与 netcoreapp3.1 不兼容,但它的目标是 net 5.0

c# - RestSharp 响应错误 : "Only one usage of each socket address (protocol/network address/port) is normally permitted"

postgresql - 迁移尝试创建已经存在的序列

c# - 为什么在 asp .net core 2.1 的每次迁移中都会删除种子角色?