ASP.NET Identity -在IdentityUser上验证唯一的用户电子邮件地址

本文关键字:唯一 验证 用户 电子邮件地址 IdentityUser NET Identity ASP | 更新日期: 2023-09-27 18:12:19

我使用的是ASP。净的身份。我已经创建了自己的用户类扩展IdentityUser。我正在尝试添加验证到用户类的电子邮件属性,以确保用户的电子邮件地址是唯一的。

要做到这一点,我已经覆盖了IdentityUser电子邮件属性,我已经添加了一个自定义ValidationAttribute。如下所示:

[UniqueUserEmail]
public override string Email
{
    get { return base.Email; }
    set { base.Email = value; }
}
public class UniqueUserEmailAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        return true;
    }
}

我计划在ASP. js中使用FindByEmail方法。. NET identity UserManager类来检测任何重复的电子邮件地址。

我的问题是如何正确地访问UserManager在我的新ValidationAttribute访问FindByEmail方法。我也很想知道其他人是如何解决这个问题的。添加访问数据库的验证。特别是如何预防ASP。. NET标识具有重复电子邮件地址的用户。

我一直在考虑使用远程验证属性,但它似乎有点重。我知道ApplicationUserManager UserValidator RequireUniqueEmail,但我希望我的模型验证是一致的。

感谢您的宝贵时间。

ASP.NET Identity -在IdentityUser上验证唯一的用户电子邮件地址

如果您的用户管理器接管了数据库上下文,您可以简单地执行以下操作

public class UniqueUserEmailAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var manager = new UserManager(new DbContext());
        //Find the email address            
        return true;
    }
}

希望能有所帮助