在我的c#代码中,我允许接受具有以下代码的相同电子邮件的用户。
UserValidator = new UserValidator<ApplicationUser>(this)
{
AllowOnlyAlphanumericUserNames = false,
RequireUniqueEmail = false
};
然而,当用户继续更改密码时,会出现一个错误:"电子邮件"zyz@domain.com'已经被占用"。如果他没有与其他用户共享他的电子邮件,那么该功能可以正常工作。下面是更改用户密码的代码。
IdentityResult result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.OldPassword,
model.NewPassword);
我现在应该在哪里进行更改,这样就有效了??
您是否将电子邮件地址视为用户名?如果你是,那么给用户一个唯一的用户名,但允许使用相同的电子邮件地址。
还要在web.config中查看RequiresUniqueEmail标记以及
<membership defaultProvider="MySqlMembershipProvider">
<providers>
<clear />
<add connectionStringName="SimpleConnection" applicationName="abc" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="15" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" name="MySqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
此外,查看以下相关线程(如果你搜索之前的问题,它对每个人都有好处(:
AspNet Identity RequireUniqueEmail=false在CreateAsync 上引发异常
RequireUniqueEmail=false不工作MVC 5