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,但我希望我的模型验证是一致的。
感谢您的宝贵时间。
如果您的用户管理器接管了数据库上下文,您可以简单地执行以下操作
public class UniqueUserEmailAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
var manager = new UserManager(new DbContext());
//Find the email address
return true;
}
}
希望能有所帮助