我开发了ASP.NET MVC5应用程序(不是ASP 5)。 我想允许用户稍后更改电子邮件。 出于这个原因,我不希望用户名等于电子邮件。 我是这样做的(通过生成用户名):
var user = new ApplicationUser { UserName = GenerateUserName(), Email = model.Email };
同时我希望电子邮件是唯一的,所以我在IdentityConfig.cs中设置RequireUniqueEmail = true:
manager.UserValidator = new UserValidator<ApplicationUser, int>(manager)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = true
};
问题是:为什么UserManager使用现有的电子邮件(非用户名)成功创建新用户?
var result = await UserManager.CreateAsync(user, model.Password);
我的猜测是,它检查UserName唯一性(在我的情况下由GenerateUserName()方法提供)。如果我的猜测是正确的 - RequireUniqueEmail属性被错误地命名为,那么它可能应该被命名为RequireUniqueUserName。或者还有我不知道的其他原因。请帮忙。