将标识移动到类库ASP.Net Core

时间:2017-01-13 04:44:23

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

我开发了一个基于ASP.Net核心的新项目。 我已将所有EF代码(模型,映射,DbContext)移动到专用的DAL类库中,以遵循SOLID规则的单一责任原则。

但是,我现在需要在我的项目中添加身份验证,并且需要将以下内容添加到我的Web项目的Startup.cs中,如不同的教程所示:

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

这将涉及添加Microsoft.AspNetCore.Identity.EntityFrameworkCore包,在我看来,我开始通过将此包包含在我的Web项目中来打破SRP规则。

是否可以将所有身份代码(服务,模型)作为外部类库移动,就像我为DAL所做的那样。

3 个答案:

答案 0 :(得分:0)

由于身份代码同时具有逻辑和UI(登录/注销,注册等),因此它需要是一个Web应用程序。

IMO有两种选择:

  1. 将身份视为单独的网络应用。由于Asp.Net Core Identity支持OAuth2(OAuth2支持代码授权等交互式授权),因此在登录/注册过程中,用户将被重定向到此Web应用程序端点。
  2. 将身份控制器与您的身份控制器合并,并将身份数据移至DAL库,请参阅:https://www.codeproject.com/Articles/1156558/ASP-NET-Core-Moving-IdentityDbContext-and-EF-model
  3. 如果SRP对您很重要,第一个选项会提供更好的选择。如果重定向到不同的URL对您来说似乎是糟糕的用户体验,那么第二个选项可能会更好。

答案 1 :(得分:0)

我正在对完全相同的问题进行自己的研究,发现该线程可以阅读有关实现here的信息,尽管它与.NET Core类库没有特别关系。 我相信校长是相似的,您可以找到解决问题的方法。 我还假设不必通过此处提到的Web应用程序来实现它。

答案 2 :(得分:-1)

是的,您只需将Microsoft.AspNetCore.Identity.EntityFrameworkCore安装到类库中