如何从Angular 2中的头响应中读取令牌?

时间:2017-06-28 15:02:59

标签: angular http-headers token

我的团队使用spring boot开发了一个REST服务。任务是构建一个登录模块。授权在后端完成。令牌在后端提供给"授权"令牌的字段。

现在我想从角度2中读取此标记。

我拥有的是:

  authenticateUser(user: ILogin): Observable<Response> {

    const url = `${this.baseUrl2}`

  //  console.log("the username after service is " + user.username + " and the password is " + user.password)

    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    console.log("the json format is " +JSON.stringify(user));

    return this.http.post(url, JSON.stringify(user))
                    .map((response: Response) => {

                        let userJson = response.headers;

                        console.log("the token is" +userJson.token); // here I got a type error and the error is that there is no token as the field of headers. 


        })
                   .do(data => console.log('authenticateuser:' + JSON.stringify(data)))
                   .catch(this.handleError);

}

我正在尝试搜索Google,但我没有找到任何方法如何从标题中读取令牌。任何人都可以帮助我吗?

P.S:如果我从

修改代码,我可以读取令牌
let userJson = response.headers;

let userJson = response.json().token

但问题是,在后端,令牌放在标题上,如果我更改我的代码如上所述,这意味着我正在寻找身体的令牌,如果我编译代码,我得到一个运行时错误。< / p>

1 个答案:

答案 0 :(得分:1)

authenticateUser(user: ILogin): Observable<Response> {    
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    console.log("the json format is " +JSON.stringify(user));

    return this.http.post(url, JSON.stringify(user))
                   .do((data:response) => {console.log(data.headers.get('token'))}))
                   .map((response: Response) => <any> response.json())
                   .catch(this.handleError);
}