我正在使用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,但我希望我的模型验证是一致的。
感谢您的时间。
答案 0 :(得分:1)
如果您的用户管理员接管了数据库上下文,您可以轻松完成此操作
public class UniqueUserEmailAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
var manager = new UserManager(new DbContext());
//Find the email address
return true;
}
}
希望这有帮助