密码的失败验证逻辑时如何读取验证错误消息

史蒂夫

在我的IdentityConfig.cs中

   manager.PasswordValidator = new PasswordValidator
        {
            RequiredLength = 6,
            RequireNonLetterOrDigit = true,
            RequireDigit = true,
            RequireLowercase = true,
            RequireUppercase = true,
        };

在我的Web MVC UI中,这是我的操作方法

HttpResponseMessage responsePost = GlobalVariables.WebApiClient.PostAsJsonAsync("Account/Register", registerBindingModel).Result;
        if (responsePost.IsSuccessStatusCode)
        {
                ViewBag.Message = "Added";
        }
        else
        {
            ViewBag.Message = "Internal server Error: " + responsePost.ReasonPhrase;
        }

该代码有效。如果数据通过密码验证逻辑,则可以发布数据。但是,如果失败,它只会返回Internal server Error: Bad Request我的用户界面。但是,当我使用Postman测试它时,我可以从身份中看到错误消息。Passwords must have at least one lowercase ('a'-'z').

此错误消息存储在HttpResponseMessage哪里?

在此处输入图片说明

注册的API方法

[AllowAnonymous]
    [HttpPost]
    [Route("Register")]
    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };

        IdentityResult result = await UserManager.CreateAsync(user, model.Password);

        if (!result.Succeeded)
        {
            return GetErrorResult(result);
        }

        return Ok();
    }

private IHttpActionResult GetErrorResult(IdentityResult result)
    {
        if (result == null)
        {
            return InternalServerError();
        }

        if (!result.Succeeded)
        {
            if (result.Errors != null)
            {
                foreach (string error in result.Errors)
                {
                    ModelState.AddModelError("", error);
                }
            }

            if (ModelState.IsValid)
            {
                // No ModelState errors are available to send, so just return an empty BadRequest.
                return BadRequest();
            }

            return BadRequest(ModelState);
        }

        return null;
    }
拉胡尔·沙玛(Rahul Sharma)

根据注释,您需要解析该字符串contentJSON并假设您API是以这种方式设计的,则返回一个字符串

我不确定您的API代码,但是如果您需要发送ModelState,则可以使用以下格式以JSON格式发送:

return Json(ModelState);

您不应该使用IsSuccessStatusCode一种检查逻辑的方法。基本上,它是一个指示HTTP响应是否成功的值。这是true如果HttpStatusCode是在成功范围(200-299); 否则false的算法IsSuccessStatusCode如下所示:

public bool IsSuccessStatusCode
{
    get { return ((int)statusCode >= 200) && ((int)statusCode <= 299); }
}

您可以清楚地看到上述功能仅取决于statusCode从API接收到的信息。

因此,您需要根据content从API收到的来定义逻辑创建一个模型,该模型将根据您在API中定义的条件保存来自API的响应。

HttpResponseMessage responsePost = GlobalVariables.WebApiClient.PostAsJsonAsync("Account/Register", registerBindingModel).Result;
MyAPIResponse model=new MyAPIResponse();
string content=string.Empty;

    if (responsePost.IsSuccessStatusCode)
    {
      content = response.Content.ReadAsStringAsync().Result;
      model = JsonConvert.DeserializeObject<MyAPIResponse>(content); 
      //or if you do not want a model structure for the parsing
      //var parsedmodel = JsonConvert.DeserializeObject<dynamic>(content);                   
    }

    ViewBag.Message=model.message;

我无法解析您评论中发布的内容,因为它不是有效的JSON字符串。您将需要JSON为逻辑生成正确的格式。

编辑:

因此,您可以ModelState使用扩展方法错误作为JSON发送

public static class ModelStateHelper
{
    public static IEnumerable Errors(this ModelStateDictionary modelState)
    {
        if (!modelState.IsValid)
        {
            return modelState.ToDictionary(kvp => kvp.Key,
                kvp => kvp.Value.Errors
                                .Select(e => e.ErrorMessage).ToArray())
                                .Where(m => m.Value.Any());
        }
        return null;
    }
}

然后从Controller动作中调用该扩展方法

if (!ModelState.IsValid)
{
    return Json(new { Errors = ModelState.Errors() }, JsonRequestBehavior.AllowGet);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

验证失败时更改输入名称的颜色和错误消息

来自分类Dev

Django,自定义身份验证登录。身份验证失败时如何显示错误消息?

来自分类Dev

验证时的 ExpressiveAnnotations 错误消息

来自分类Dev

错误:用户“myuser”的密码验证失败

来自分类Dev

错误:-{“代码”:“ 403”,“消息”:“ HMAC验证失败”}

来自分类Dev

验证失败后打印错误消息

来自分类Dev

节点 HTTPS - 从 process.env 读取密码时 mac 验证失败

来自分类Dev

使用验证批注时,如何强制显示错误消息的顺序?

来自分类Dev

使用Blazor验证时如何清除错误消息

来自分类Dev

由于验证消息,div在验证失败时向左移动

来自分类Dev

Aurelia验证-验证失败时不显示任何消息

来自分类Dev

Postgres密码验证失败

来自分类Dev

Postgres密码验证失败

来自分类Dev

从验证中验证,如何解决验证功能错误消息?

来自分类Dev

如何使用新的错误消息创建自定义MaxLength和Required验证,逻辑保持不变

来自分类Dev

如何使用新的错误消息创建自定义MaxLength和Required验证,逻辑保持不变

来自分类Dev

psql: 致命: 尝试访问 psql 时用户错误导致密码验证失败

来自分类Dev

错误密码:chsh:PAM:尝试安装时验证失败 Oh my zsh

来自分类Dev

密码错误验证的自定义错误消息

来自分类Dev

如何在MVC中为密码配置验证逻辑?

来自分类Dev

收到IDX10501的错误消息:签名验证失败。使用Azure AD时无法匹配密钥

来自分类Dev

输入验证失败时,Zend Framework 1.7转发请求带有错误消息

来自分类Dev

使用api验证失败时显示错误

来自分类Dev

如何禁用Gnome屏幕保护程序的“身份验证失败时摇晃密码对话框”?

来自分类Dev

C#我将如何向我的应用程序添加基本验证,以便在输入错误的用户名或密码时显示一个消息框

来自分类Dev

Ecto Postgres安装错误密码身份验证失败

来自分类Dev

Xcode 8出现错误:“密码验证失败。”

来自分类Dev

直接在程序中提供密码时,jsonwebtoken验证失败

来自分类Dev

如何在asp.net mvc中找到模型状态验证失败的不同错误消息

Related 相关文章

  1. 1

    验证失败时更改输入名称的颜色和错误消息

  2. 2

    Django,自定义身份验证登录。身份验证失败时如何显示错误消息?

  3. 3

    验证时的 ExpressiveAnnotations 错误消息

  4. 4

    错误:用户“myuser”的密码验证失败

  5. 5

    错误:-{“代码”:“ 403”,“消息”:“ HMAC验证失败”}

  6. 6

    验证失败后打印错误消息

  7. 7

    节点 HTTPS - 从 process.env 读取密码时 mac 验证失败

  8. 8

    使用验证批注时,如何强制显示错误消息的顺序?

  9. 9

    使用Blazor验证时如何清除错误消息

  10. 10

    由于验证消息,div在验证失败时向左移动

  11. 11

    Aurelia验证-验证失败时不显示任何消息

  12. 12

    Postgres密码验证失败

  13. 13

    Postgres密码验证失败

  14. 14

    从验证中验证,如何解决验证功能错误消息?

  15. 15

    如何使用新的错误消息创建自定义MaxLength和Required验证,逻辑保持不变

  16. 16

    如何使用新的错误消息创建自定义MaxLength和Required验证,逻辑保持不变

  17. 17

    psql: 致命: 尝试访问 psql 时用户错误导致密码验证失败

  18. 18

    错误密码:chsh:PAM:尝试安装时验证失败 Oh my zsh

  19. 19

    密码错误验证的自定义错误消息

  20. 20

    如何在MVC中为密码配置验证逻辑?

  21. 21

    收到IDX10501的错误消息:签名验证失败。使用Azure AD时无法匹配密钥

  22. 22

    输入验证失败时,Zend Framework 1.7转发请求带有错误消息

  23. 23

    使用api验证失败时显示错误

  24. 24

    如何禁用Gnome屏幕保护程序的“身份验证失败时摇晃密码对话框”?

  25. 25

    C#我将如何向我的应用程序添加基本验证,以便在输入错误的用户名或密码时显示一个消息框

  26. 26

    Ecto Postgres安装错误密码身份验证失败

  27. 27

    Xcode 8出现错误:“密码验证失败。”

  28. 28

    直接在程序中提供密码时,jsonwebtoken验证失败

  29. 29

    如何在asp.net mvc中找到模型状态验证失败的不同错误消息

热门标签

归档