首页 > 解决方案 > 身份框架 ASP.NET Core 仅允许 @company.com 注册

问题描述

如何@companyname.com在具有标识框架的 ASP.NET Core Web 应用程序中只允许电子邮件地址?

在我的应用程序中,我有不同的角色和两个电子邮件地址company.com& company.cs

谢谢

标签: asp.net-core-mvcasp.net-identity

解决方案


如果您使用脚手架身份,您可以添加自定义验证属性并将其应用于您的 Register EmailAddress 属性。

为了创建自定义验证属性,您需要创建一个继承自基ValidationAttribute类并覆盖其IsValid()方法的类。

public class IdentityEmailAttribute:ValidationAttribute
{
    protected override ValidationResult IsValid (object value, ValidationContext validationContext)
    {
        string email = value.ToString();

        if (email.EndsWith("@companyname.com") == false)
        {
            return new ValidationResult("Invalid Email Address which does not end with @companyname.com");
        }
        return ValidationResult.Success;
    }
}

创建后,您可以[IdentityEmail]在 Register.cshtml.cs 中的 InputModel 的 Email 属性之上应用该属性:

public class InputModel
    {
        [Required]
        [EmailAddress]
        [Display(Name = "Email")]
        [IdentityEmail]
        public string Email { get; set; }

        //other properties
    }

推荐阅读