【问题标题】:Could not be able to change passwords无法更改密码
【发布时间】:2023-03-12 12:23:01
【问题描述】:

我正在使用 ASP.NET MVC5,我想更改帐户的密码,但我不断收到错误消息“一个或多个实体的验证失败。查看验证错误”,源代码错误是

var result = await UserManager.ChangePasswordAsync(User.Identity.GetUserId(), model.oldPassword, model.NewPassword);

【问题讨论】:

  • 查看验证错误" where???? @ILoveCode
  • 关于我发布的代码。我的密码匹配并通过了所有要求
  • @ShakirAhamed 需要你的帮助

标签: asp.net entity-framework asp.net-mvc-5


【解决方案1】:

我会检查您的ChangePasswordAsync,我假设您正在保存对密码的更改,即保存到包含密码的实体。为了给你更准确的答案,我需要你对这种方法的逻辑。

我的猜测是,要么找不到您的实体,而 EF 尝试将更改保存到新实体,并且由于新实体没有属性值,因此导致错误或找到的实体缺少一些值。

检查这个漂亮的小sn-p,它可以帮助您调试并找出错误发生在哪个属性上。注意:Entities 是 Entities 类的部分类,因此请相应地更改名称。

public partial class Entities
{
    public override int SaveChanges()
    {
        try
        {
            return base.SaveChanges();
        }
        catch (DbEntityValidationException ex)
        {
            var errorMessages = ex.EntityValidationErrors
                    .SelectMany(x => x.ValidationErrors)
                    .Select(x => x.ErrorMessage);

            var fullErrorMessage = string.Join("; ", errorMessages);

            var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

            throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
        }
    }
}

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 2013-09-06
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多