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

时间:2014-07-10 21:08:51

标签: c# asp.net asp.net-mvc validation email

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

为此,我已经覆盖了我添加了自定义ValidationAttribute的IdentityUser电子邮件属性。如下图所示:

[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.NET身份UserManager类上使用FindByEmail方法来检测任何重复的电子邮件地址。

我的问题是如何正确访问新ValidationAttribute中的UserManager以访问FindByEmail方法。我也有兴趣了解其他人如何解决这个问题。添加访问数据库的验证。特别是如何以这种方式阻止具有重复电子邮件地址的ASP.NET身份用户。

我一直在寻找使用远程验证属性,但它看起来有点沉重。我知道ApplicationUserManager UserValidator RequireUniqueEmail,但我希望我的模型验证是一致的。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

如果您的用户管理员接管了数据库上下文,您可以轻松完成此操作

public class UniqueUserEmailAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var manager = new UserManager(new DbContext());

        //Find the email address            

        return true;
    }
}

希望这有帮助