在ASP.NET Core MVC中将身份提取到单独的项目中。

3

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

虽然我也可以自己编写这些功能,但我真的想利用控制器和动作中的授权属性。

但是我想将Identity部分提取到一个单独的项目中,使得我的MVC项目不直接依赖Entity/DBContexts。

创建带有Identity的新MVC项目时,会生成:

  • Services
  • Migrations
  • ApplicationDBContext

同时还需要引用:

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

我是否有简单的方法可以将所有Identity代码提取到单独的项目中,使得我的控制器只使用该项目中的服务(在控制器的构造函数中注入)?


我在我的项目中实现了多租户身份验证,代码托管在 https://github.com/joeaudette/cloudscribe 上。 - Joe Audette
那很酷。我会尝试类似的东西。我再看了一遍,似乎将其提取到单独的项目中是“简单”的。谢天谢地,我不必担心多租户问题。 - Trolley
1个回答

1

保持项目引用在各层之间分离的方法,使UI/MVC层不直接引用Db/Storage层,是在项目的其他层中对IServiceCollection进行扩展方法。

因此,UI引用Business/Services层并调用位于Business/Service层的IServiceCollection的扩展方法,这些方法反过来可以调用Db/Storage层的扩展方法。

类似的问题和示例在此处

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接