我正在使用visual studio 2013开发一个WEB API asp.net项目,我正在实现自定义身份模型以进行自定义注册。例如,我在RegisterBindingModel中添加了一个电子邮件字段。
这就是我所做的:How to extend asp.net web api 2 user?
我添加了电子邮件属性,我需要该属性是唯一的(作为UserName),但默认情况下可以重复该电子邮件属性。我的问题是如何使这个电子邮件属性与UserName一样独特?我已经读过可以使用UserValidator设置唯一属性,但无法找到。你能用UserValidator或者最好的方式告诉我如何做到这一点吗?
UserName属性如何定义为唯一?我无法在任何地方找到它。
谢谢。
答案 0 :(得分:3)
有不同的方法来实现这一点,但不是开箱即用。但是,您可以使用Fluent Validation
实现可扩展验证[Validator(typeof(ApplicationUserValidator))]
class ApplicationUser : IdentityUser
{
public string Email { get; set; }
//...Model implementation omitted
}
public class ApplicationUserValidator : AbstractValidator<ApplicationUser>
{
public ApplicationUserValidator()
{
RuleFor(x => x.Email).Must(IsUniqueEmail).WithMessage("Email already exists");
}
private bool IsUniqueEmail(string mail)
{
var _db = new DataContext();
if (_db.NewModel.SingleOrDefault(x => x.Email == mail) == null) return true;
return false;
}
//implementing additional validation for other properties:
private bool IsUniqueTelephoneNumber(string number)
{
//...implement here
}
}