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



我有一个多租户 Web/移动应用程序,它使用 Asp.Net Identity 作为其成员资格/身份验证。用户可以通过安卓应用程序或直接通过网络界面使用该应用程序。他们必须注册才能使用该应用程序。

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

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

对于这种情况,有什么好的设计吗?

如果要为用户帐户实现自己的验证规则,则必须实现自己的IIdentityValidator<TUser>。可能最简单的方法是从框架的UserValidator<TUser>类继承(请参阅此处的源代码(并覆盖类的相关部分。如果要在租户中添加用户名/电子邮件唯一性,但允许在不同租户之间使用相同的电子邮件,这将非常有用。

一旦你有了你的实现,你就可以把它插入到UserManager.UserValidator,它需要一个IIdentityValidator<TUser>

相关内容

  • 没有找到相关文章

最新更新