我正在使用Visual Studio 2013开发一个Web API ASP.NET项目,并且我正在实现自定义标识模型以进行自定义注册。例如,我在registerbindingModel中添加了电子邮件字段。
这是我所做的:如何扩展ASP.NET Web API 2用户?
我已经添加了电子邮件属性,我需要该属性是唯一的(作为用户名),但是默认情况下可以重复该电子邮件属性。我的问题是,如何使此电子邮件属性具有独特性,例如用户名?我读到可以使用Uservalidator设置独特的属性,但找不到方法。您能告诉我如何使用Uservalidator或最好的方法做到这一点?
以及用户名属性如何定义为唯一?我找不到任何地方。
谢谢。
有一种不同的方法来实现此目标,但没有开箱即用。但是,您可以使用Fluent验证实现可扩展的验证
[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
}
}