访问令牌和响应数据

时间:2016-05-12 14:44:19

标签: javascript typescript angular local-storage angular2-services

尝试使用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);
        });

我得到了我想要的令牌行为,除了我无法访问组件中的响应对象,因此无法显示错误消息。

如何检查令牌并获取对响应数据的访问权?

2 个答案:

答案 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;
                }
            }
        )