尝试使用Angular 2找出一些基本身份验证。我希望我的组件检查令牌,如果存在则导航到正确的位置,但如果它没有显示服务返回的错误消息。这是服务电话:
this._loginService.login(loginQuery)
.subscribe(
(token: any) => this._router.navigate( ['User', { username: user }] ),
(data) => { this.errorMessage = data.ErrorMessage; }
)
以下是该服务的代码:
return this._http.post('serivcelink,
body,
{headers:headers})
.map((res : any) => {
let data = res.json();
this.token = data.TeamMember.UserName;
localStorage.setItem('token', this.token);
});
我得到了我想要的令牌行为,除了我无法访问组件中的响应对象,因此无法显示错误消息。
如何检查令牌并获取对响应数据的访问权?
答案 0 :(得分:0)
您需要在map
回调中返回一些内容,例如this.token
:
return this._http.post('serivcelink,
body,
{headers:headers})
.map((res : any) => {
let data = res.json();
this.token = data.TeamMember.UserName;
localStorage.setItem('token', this.token);
return this.token; // <-------
});
您返回的内容将作为参数接收到subscribe
方法的回调中。
答案 1 :(得分:0)
您可以使用if语句检查您的令牌是否存在,否则会显示错误消息:
this._loginService.login(loginQuery)
.subscribe(
(data: any) => {
if (localStorage.getItem('token')) {
this._router.navigate( ['User', { username: user }] )
} else {
this.errorMessage = data.ErrorMessage;
}
}
)