具有ASP.NET身份的模型的唯一属性



我正在使用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
    }
}

相关内容

  • 没有找到相关文章

最新更新