我开发了一个基于ASP.Net核心的新项目.
我已将所有EF代码(模型,映射,DbContext)移动到专用DAL类库中,以遵循SOLID规则的单一责任原则.
我已将所有EF代码(模型,映射,DbContext)移动到专用DAL类库中,以遵循SOLID规则的单一责任原则.
但是,我现在需要在我的项目中添加身份验证,并且需要将以下内容添加到我的Web项目的Startup.cs中,如不同的教程所示:
services.AddIdentity<ApplicationUser,IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders();
它将涉及添加Microsoft.AspNetCore.Identity.EntityFrameworkCore包,在我看来,我开始通过将此包包含到我的Web项目中来打破SRP规则.
是否可以将所有身份代码(服务,模型)作为外部类库移动,就像我为DAL所做的那样.
解决方法
由于身份代码同时具有逻辑和UI(登录/注销,注册等),因此它需要是一个Web应用程序.
IMO有两种选择:
>将身份作为单独的Web应用程序.由于Asp.Net Core Identity支持OAuth2(OAuth2支持代码授权等交互式授权),因此用户将在登录/注册过程中重定向到此Web应用程序端点.
>将身份控制器与您的身份控制器相结合,并将身份数据移动到您的DAL库,请参阅:https://www.codeproject.com/Articles/1156558/ASP-NET-Core-Moving-IdentityDbContext-and-EF-model
如果SRP对您很重要,第一个选项可以提供更好的选择.如果重定向到不同的URL对您来说似乎是一个糟糕的用户体验,那么第二个选项可能会更好.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。