Http statusText 未显示在 Angular 错误消息中

Http statusText not displaying in Angular error message

提问人:SIDev 提问时间:5/9/2023 更新时间:5/9/2023 访问量:39

问:

我有一个标准的 Angular 前端应用程序,带有僵尸网络核心 API 后端。在后端登录方法中,我创建了各种检查,以查看用户是否处于活动状态,是否有权在一天中的某些时间登录等。对于这些检查中的每一个,我都创建了一条错误消息,其中包含特定文本,说明返回错误的原因。例如

检查用户是否处于活动状态 if (用户。IsActive == false) return BadRequest(“帐户无效”);

当我从 Postman 进行测试时,它按预期工作并返回 400 Bad Request 以及 postman 响应正文中的消息。

从 Angular 项目调用 login 方法时,该方法在浏览器工具的网络选项卡中返回预期的响应以及响应正文;但是,我唯一能够在 Angular 中得到的错误是“错误请求”。我需要获取实际的特定错误文本,以便它可以在烤面包机通知中显示给用户,通知他们特定错误。

控制器

public async Task Login(LoginDto loginDto) { var user = await _userManager.Users.SingleOrDefaultAsync(x => x.UserName == loginDto.Username);

        // Check if user is active
        if (user.IsActive == false) return BadRequest("Account not valid");          

        // Check if user has day or time restrictions


        // Check if username is valid
        if (user == null) return Unauthorized("Invalid username");

        // Check if password is correct
        var result = await _userManager.CheckPasswordAsync(user, loginDto.Password);
        if (!result) return Unauthorized("Invalid Password");

        // Allow login
        return Ok(new
        {
            Username = user.UserName,
            IsActive = user.IsActive,
            FirstName = user.FirstName,
            LastName = user.LastName,
            Token = await _tokenService.CreateToken(user)
            
        });
    }

登录组件

登录() { const userlogin = this.loginForm.value;

this.authenticationService.login(userlogin.username, userlogin.password).subscribe(
  (response: User) =>{
    console.log(response);
    const user = response;
    if (user) {
      this.toastr.success('Login Successful');
      // localStorage.setItem('token', user.token);
      localStorage.setItem('userIsActive', JSON.stringify(response.isActive));
      localStorage.setItem('userFirstName', response.firstName);
      localStorage.setItem('userLastName', response.lastName);
      this.router.navigate(['/dashboard']);
    } 
  }, (error) => {
    console.error(error);
    let errorMsg = error;
    console.log('Error is ' + errorMsg);

  }
);

身份验证服务

login(用户名: string, password: string) { 返回 this.http.post(this.baseUrl + this.baseUrlLogin, { username, password }); 返回 this.http.post(this.baseUrl + this.baseUrlLogin, { username, password }); }

这是我在控制台中收到的内容:

[错误]错误的请求 [日志]错误是错误请求(main.js,第 121 行)

但是在网络选项卡中,我收到了我想要的东西:

帐户无效

我尝试了使用 HttpResponse 拦截器的多种不同变体,它们都返回未定义的响应或上面提到的简单错误请求。

期待 能够在控制台中查看响应正文,以便可以在向用户发送的烤面包机消息中显示响应正文。

角度 错误处理 ASP.NET-CORE-WEBAPI HTTPRESPONSE

评论


答: 暂无答案