繁体   English   中英

尝试使用 angular / spring 安全登录时未定义的变量 res

[英]undefined variable res while trying to login using angular / spring security

我正在尝试使用 angular / spring 安全性进行身份验证

我的后端工作完美。

问题在于这个负责登录的 function:

  onFormSubmit(authBody: authBody ) {

    this.authService.login(authBody)
      .subscribe(res => {
        console.log(res);
        if (res.token) {
          localStorage.setItem('token', res.token);
          this.router.navigate(["/menu"]);
        }
      }, (err) => {
        console.log(err);
      });
  }

console.log(res) 返回:{username=med, token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJtZWQiLCJyb2xlcyI6W10sImlhdCI6MTYzOTA2NzgzOSwiZXhwIjoxNjM5MDcxNDM5fQ.a-DzNNeVRZ6XUPwYnzAk_P_0yFQO5GXwvB

我尝试从此 object 获取令牌,但是在使用 if(res.token) 进行测试时,它返回未定义。

这是我的身份验证方法服务:

login(authBody: authBody): Observable<any> {
    console.log(authBody.username);
    return this.http.post(apiUrl + this.aPILogin, authBody ,{responseType: 'text'})
      .pipe(
        tap(_ => this.isLoggedIn = true),
        catchError(this.handleError('login', []))
      );
  }

有什么建议吗?

谢谢你

由于您将responseType定义为文本,因此您从 observable 中获取string ,而不是object

要使其按预期工作,您必须做两件事:

1.- 从服务器返回一个正确的 JSON。 (无法帮助您,因为我从未使用过 Spring)。

2.- 删除 responseType(其默认值为 json),以便将响应正文解析为 object。

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM