我有一个多租户网络/移动应用程序,使用Asp.Net Identity
进行会员/身份验证。用户可以通过Android应用程序或直接通过Web界面使用该应用程序。他们必须注册才能使用该应用程序。
问题是具有单个电子邮件/用户名/电话号码的用户无法同时在多个租户中注册。例如,想象一个租户专注于会计,另一个专门用于消息传递。用户想要使用一个唯一的电子邮件/用户名/电话在两者中注册。但是Identity
自然不允许重复的电子邮件/用户名/电话。
我在AppId
实体中引入了IdentityUser
。很明显,用户属于哪个应用程序。解决方法是使用AppId
。例如,在AppId
前附加username
以使其唯一。
这种情况有没有好的设计?
答案 0 :(得分:1)
如果您要为用户帐户实施自己的验证规则,则必须实施自己的IIdentityValidator<TUser>
。可能最简单的方法是继承框架的UserValidator<TUser>
类(see source here)并覆盖类的相关部分。如果您想在租户中添加用户名/电子邮件唯一性,但允许在不同租户之间使用相同的电子邮件,这非常有用。
一旦您完成了实施,就可以将其插入UserManager.UserValidator
,其中包含IIdentityValidator<TUser>
的实例