提取标识以分离ASP.NET Core MVC中的项目

时间:2016-08-26 11:59:24

标签: asp.net-core asp.net-core-mvc

我正在设置一个新的ASP.NET Core项目,在我的MVC项目中,我希望使用Identity进行用户注册/登录等。

我可以编写自己的,但我真的想在控制器和操作中使用授权属性。

但是,我想将Identity部分提取到一个单独的项目中,因此我的MVC项目与Entity / DBContexts没有直接的依赖关系。

使用Identity创建新的MVC项目时,会创建:

  • 服务
  • 迁移
  • ApplicationDBContext

除了参考:

  • Microsoft.AspNetCore.Identity.EntityFrameworkCore
  • Microsoft.EntityFramework。*

有没有简单的方法可以将所有身份代码提取到一个单独的项目中,我的控制器只使用该项目中的服务(注入控制器的构造函数中)?

1 个答案:

答案 0 :(得分:0)

保持项目引用在层之间分离以便UI / MVC层不直接引用Db /存储层的方法是在项目的其他层中的IServiceCollection上创建扩展方法。

因此,UI引用了Business / Services层并调用了业务/服务层中存在的IServiceCollection的扩展方法,这些方法又可以调用Db / Storage层中的扩展方法。

与示例here

类似的问题

但是当您将EF代码移动到单独的类库中时,存在一些已知的问题,即运行EF命令以生成迁移不起作用。您可以通过使类库成为具有自己的Startup类的应用程序/控制台应用程序来解决这个问题。我的理解是这将在以后解决。