Multi tenant 如何使用ASP.NET标识实现多租户用户登录

Multi tenant 如何使用ASP.NET标识实现多租户用户登录,multi-tenant,entity-framework-6,asp.net-identity,Multi Tenant,Entity Framework 6,Asp.net Identity,我正在开发一个多租户解决方案,我想使用最新的框架,特别是实现 基本上,我需要允许两个用户拥有相同的用户名,尽管它在租户中必须是唯一的,但我也希望使用外部登录,如Twitter、Microsoft、Facebook和Google 据我所知,该框架的设计并没有考虑到多租户,尽管它似乎允许扩展性。我更愿意尽可能多地利用现有组件,尽管目前我认为我不得不放弃实现,自己编写代码 是否有其他人尝试过这种方法,他们需要自己编写多少代码。是的,我们明确地将其作为可扩展性场景。您应该能够通过覆盖UserManage

我正在开发一个多租户解决方案,我想使用最新的框架,特别是实现

基本上,我需要允许两个用户拥有相同的用户名,尽管它在租户中必须是唯一的,但我也希望使用外部登录,如Twitter、Microsoft、Facebook和Google

据我所知,该框架的设计并没有考虑到多租户,尽管它似乎允许扩展性。我更愿意尽可能多地利用现有组件,尽管目前我认为我不得不放弃实现,自己编写代码


是否有其他人尝试过这种方法,他们需要自己编写多少代码。

是的,我们明确地将其作为可扩展性场景。您应该能够通过覆盖UserManager属性和实现自己的自定义IUserStore来实现这一点。尽管您也可以扩展EF UserStore,只需向用户添加一个租户即可。

我现在有了一个在GitHub存储库中共享的工作解决方案:

支持多租户所需的扩展性在的1.0.0版本中是不可能的(至少在没有大量定制工作的情况下是不可能的),但在当前通过提供的1.1 alpha版本中是可用的

我已经决定发布我制作的NuGet软件包,正如它目前要求的那样

我提供了两个简单的站点,它们利用包来支持多租户:

  • 这是使用字符串主键的标准MVC5模板项目。
    • 提供多租户所需的更改已与此隔离
  • 这使得更多的自定义使用整数主键
    • 提供多租户所需的更改已与此隔离
  • 我计划在ASP.NET Identity的1.1版本发布时更新解决方案

    我希望其他人能在我发布的nuget软件包中找到一些用处,任何反馈都是非常受欢迎和欢迎的


    更新
    该解决方案现已更新为使用的2.0版本。

    您可以在内部将租户
    7
    的用户
    Jim
    存储和处理为
    7\Jim
    。情况如何?我们目前正在实施同样的事情。2.0更好吗?图书馆需要改进还是有什么问题?@Bart一切顺利,请看我的答案谢谢回复,非常感谢。我一直在关注夜间构建,因为它们允许模型具有更大的可扩展性。我目前正在设计一个解决方案的原型。嗨,詹姆斯,这正是我当前项目所需要的,但我在添加它时遇到了困难。首先,名称空间AspNet.Identity.EntityFramework.Multitenant;不行,我有正确的EF版本,有什么明显的东西我应该检查吗?感谢是我在不到一分钟后找到答案的方式。这可能是有用的添加到您的描述,并在此工作非常感谢!安装程序包AspNet.Identity.EntityFramework.MultiTenant感谢您的帮助。我的问题是,这能像Facebook/Google/Microsoft登录那样实现吗?意思是,我有很多项目中的一个。当用户从任何项目单击登录时,我希望他们转到这个通用登录站点(您的代码),允许他们登录或使用FB/G/MS,然后将我需要的(标识+声明)返回给他们来自的任何站点。就像我将FB/G/MS集成到任何站点一样,它实际上会进入FB/G/MS,进行身份验证并返回到我的站点。因此,尽管FB/G/MS登录是无缝的,但我希望这个多租户网站能做到这一点。@Grandizer如果我理解正确的话,是的,它也可以与外部登录一起使用,例如FB/Google/MS。@jamesskiming thnx,这是詹姆斯的好作品。有关于如何开始使用示例解决方案的文档吗?或者在某个地方有一个更完整的示例项目?我看到您在AccountController构造函数中传递了tenantid,但我有点不知道如何从那里继续。