我开发了一个基于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 有两个选项:
- 将 Identity 作为一个单独的网络应用程序。由于 Asp.Net Core Identity 支持 OAuth2(OAuth2 支持交互式授权,例如代码授权),因此用户将在登录/注册过程中被重定向到此 Web 应用端点。
- 将身份 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/