访问令牌和响应数据

Accessing tokens and response data

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

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

如何检查令牌并访问响应数据?

您需要 return 在 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; // <-------
    });

您 return 将作为参数接收到 subscribe 方法的回调中。

您可以使用 if 语句来检查您的令牌是否存在,否则显示错误消息:

this._loginService.login(loginQuery)
        .subscribe(
            (data: any) => {
                if (localStorage.getItem('token')) {
                    this._router.navigate( ['User', { username: user }] )
                } else {
                    this.errorMessage = data.ErrorMessage;
                }
            }
        )