提问人:SIDev 提问时间:5/9/2023 更新时间:5/9/2023 访问量:39
Http statusText 未显示在 Angular 错误消息中
Http statusText not displaying in Angular error message
问:
我有一个标准的 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 拦截器的多种不同变体,它们都返回未定义的响应或上面提到的简单错误请求。
期待 能够在控制台中查看响应正文,以便可以在向用户发送的烤面包机消息中显示响应正文。
答: 暂无答案
评论