如何让默认的SignInManger使用用户名而不是电子邮件?

时间:2015-09-15 20:30:51

标签: mysql asp.net asp.net-mvc

我正在Visual Studio 2015中的ASP.net MVC 5中创建一个网站。我正在尝试这样做,以便在注册和登录帐户时,它允许您使用用户名而不是电子邮件。< / p>

然而,我似乎无法弄清楚如何做到这一点。我已经将模型更改为使用用户名而不是电子邮件地址,我甚至从模型中删除了[EmailAddress],并允许电子邮件在其使用的MySql数据库中为空。但在注册帐户时,它仍然不允许我使用用户名而不是电子邮件。

它发出的错误表明电子邮件不能为空或空。

1 个答案:

答案 0 :(得分:0)

你的问题是,在ApplicationUser中,Email是必填字段,因为它是由IdentityUser继承的。 所以在

中添加电子邮件字段

<强> RegisterViewModel

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

关于登记的后期行动 使用此代码创建用户

 var user = new ApplicationUser { UserName = model.Username, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);

现在,当您使用用户名登录时,请使用此代码

var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout: false);

它允许您通过UserName登录。