【问题标题】:Allowing RequireUniqueEmail = false gives error in ChangePasswordAsync method允许 RequireUniqueEmail = false 会导致 ChangePasswordAsync 方法出错
【发布时间】:2020-02-22 16:29:32
【问题描述】:

在我的 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);

我现在应该在哪里进行更改,这样才有效??

【问题讨论】:

    标签: c# asp.net-web-api asp.net-mvc-5 asp.net-identity


    【解决方案1】:

    您是否将电子邮件地址视为用户名?如果是,请为用户提供唯一的用户名,但允许使用相同的电子邮件地址。

    同时检查您的 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 throws exception on CreateAsync

    RequireUniqueEmail = false not working MVC 5

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-10
      • 2016-02-06
      • 2020-07-21
      • 2019-10-15
      • 1970-01-01
      • 2021-02-14
      • 2021-10-03
      • 2016-03-19
      相关资源
      最近更新 更多