我开发了一个基于ASP.Net核心的新项目。 我已将所有EF代码(模型,映射,DbContext)移动到专用的DAL类库中,以遵循SOLID规则的单一责任原则。
但是,我现在需要在我的项目中添加身份验证,并且需要将以下内容添加到我的Web项目的Startup.cs中,如不同的教程所示:
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
这将涉及添加Microsoft.AspNetCore.Identity.EntityFrameworkCore包,在我看来,我开始通过将此包包含在我的Web项目中来打破SRP规则。
是否可以将所有身份代码(服务,模型)作为外部类库移动,就像我为DAL所做的那样。
答案 0 :(得分:0)
由于身份代码同时具有逻辑和UI(登录/注销,注册等),因此它需要是一个Web应用程序。
IMO有两种选择:
如果SRP对您很重要,第一个选项会提供更好的选择。如果重定向到不同的URL对您来说似乎是糟糕的用户体验,那么第二个选项可能会更好。
答案 1 :(得分:0)
我正在对完全相同的问题进行自己的研究,发现该线程可以阅读有关实现here的信息,尽管它与.NET Core类库没有特别关系。 我相信校长是相似的,您可以找到解决问题的方法。 我还假设不必通过此处提到的Web应用程序来实现它。
答案 2 :(得分:-1)
是的,您只需将Microsoft.AspNetCore.Identity.EntityFrameworkCore安装到类库中