ASP.NET身份更改验证

时间:2015-06-27 15:30:35

标签: c# asp.net asp.net-mvc asp.net-identity identity

我想为我创建的几个网站使用ASP.NET Identity,我确实希望在每个网站上使用相同的数据库。

当我尝试使用相同的电子邮件注册两个用户时,我会收到“名称已经被取消”。我已在IdentityConfig中设置字段“RequireUniqueEmail = false”。

在AspNetUsers中,我有一个名为“web_id”的字段。应该可以在一个web_id中创建一个相同的用户,但应该可以在不同的web_id上创建具有相同电子邮件的用户。

有谁知道我能做到这一点?

1 个答案:

答案 0 :(得分:0)

以下是Identity UserValidator的源代码UserValidator。您可以查看是否设置" RequireUniqueEmail = false",它不再验证电子邮件,这是不理想的。

我能想到两种解决方案:

  1. 将(email,web_id)作为db模式中的分组键/索引,在这种情况下,它们中的任何一个都可以,但不是两者都可以。然后在创建用户时处理错误,如果由于此索引重复而无法创建用户,则将其视为重复电子邮件。当然,你需要设置" RequireUniqueEmail = false"在这种情况下。

  2. 或者创建UserValidator或IUserValidator接口的子类,实现自己的逻辑检查(email,web_id),然后将其设置为UserManager。