我正在开发一个多租户解决方案,我想使用最新的ASP.NET Identity框架,特别是Entity Framework实现。
基本上我需要允许两个用户拥有相同的用户名,虽然它在租户中必须是唯一的,我也想利用外部登录,如Twitter,微软,Facebook和谷歌。
据我所知,该框架并未考虑多租户设计,尽管它似乎确实允许扩展性。我宁愿尽可能多地使用现有组件,但目前我认为我将不得不放弃Entity Framework实现,并自己编写代码。
是否还有其他人尝试过此操作以及他们必须自行编码多少。
答案 0 :(得分:27)
我现在有一个工作解决方案,我在GitHub存储库中共享:
https://github.com/JSkimming/AspNet.Identity.EntityFramework.Multitenant
Microsoft.AspNet.Identity.EntityFramework的1.0.0版本无法实现支持多租户所需的可扩展性(至少没有大量的自定义工作),但是目前可通过Nightly ASP.NET Web Stack NuGet Packages
我决定发布我作为NuGet包AspNet.Identity.EntityFramework.Multitenant生成的内容,如上所述,目前需要Nightly ASP.NET Web Stack NuGet Packages。
我提供了两个简单的网站,使用这个包来实现多租户:
我计划在发布1.1版本的ASP.NET身份时更新解决方案。
我希望其他人在我发布的nuget包中找到一些用处,任何反馈都非常受欢迎,请raise any issues you find。
该解决方案现已更新为使用Microsoft.AspNet.Identity.EntityFramework的2.0版本。
答案 1 :(得分:3)
是的,我们明确将此视为可扩展性方案。您应该可以通过覆盖UserManager属性并实现自己的自定义IUserStore来实现此目的。虽然您可能也可以扩展EF UserStore,只需向用户添加tenantId。