[英]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.