多租户应用程序的标识允许重复的电子邮件或用户名

时间:2016-04-04 09:52:01

标签: asp.net-identity multi-tenant

我有一个多租户网络/移动应用程序,使用Asp.Net Identity进行会员/身份验证。用户可以通过Android应用程序或直接通过Web界面使用该应用程序。他们必须注册才能使用该应用程序。

问题是具有单个电子邮件/用户名/电话号码的用户无法同时在多个租户中注册。例如,想象一个租户专注于会计,另一个专门用于消息传递。用户想要使用一个唯一的电子邮件/用户名/电话在两者中注册。但是Identity自然不允许重复的电子邮件/用户名/电话。

我在AppId实体中引入了IdentityUser。很明显,用户属于哪个应用程序。解决方法是使用AppId。例如,在AppId前附加username以使其唯一。

这种情况有没有好的设计?

1 个答案:

答案 0 :(得分:1)

如果您要为用户帐户实施自己的验证规则,则必须实施自己的IIdentityValidator<TUser>。可能最简单的方法是继承框架的UserValidator<TUser>类(see source here)并覆盖类的相关部分。如果您想在租户中添加用户名/电子邮件唯一性,但允许在不同租户之间使用相同的电子邮件,这非常有用。

一旦您完成了实施,就可以将其插入UserManager.UserValidator,其中包含IIdentityValidator<TUser>的实例