我需要在用户登录后为每个后续请求设置一些授权标头。
要为特定请求设置标头,
import {Headers} from 'angular2/http';
var headers = new Headers();
headers.append(headerName, value);
// HTTP POST using these headers
this.http.post(url, data, {
headers: headers
})
// do something with the response
参考 https://auth0.com/blog/2015/10/15/angular-2-series-part-3-using-http/
但以这种方式为每个请求手动设置请求头是不可行的。
如何设置用户登录后设置的标头,并在注销时删除这些标头?
要回答,您质疑您是否可以提供包含原始内容的服务Http
来自 Angular 的对象。就像下面描述的那样。
import {Injectable} from '@angular/core';
import {Http, Headers} from '@angular/http';
@Injectable()
export class HttpClient {
constructor(private http: Http) {}
createAuthorizationHeader(headers: Headers) {
headers.append('Authorization', 'Basic ' +
btoa('username:password'));
}
get(url) {
let headers = new Headers();
this.createAuthorizationHeader(headers);
return this.http.get(url, {
headers: headers
});
}
post(url, data) {
let headers = new Headers();
this.createAuthorizationHeader(headers);
return this.http.post(url, data, {
headers: headers
});
}
}
而不是注入Http
你可以注入这个对象(HttpClient
).
import { HttpClient } from './http-client';
export class MyComponent {
// Notice we inject "our" HttpClient here, naming it Http so it's easier
constructor(http: HttpClient) {
this.http = httpClient;
}
handleSomething() {
this.http.post(url, data).subscribe(result => {
// console.log( result );
});
}
}
我还认为可以使用多个提供商来完成一些事情Http
类通过提供你自己的类来扩展Http
一...请参阅此链接:http://blog.thoughtram.io/angular2/2015/11/23/multi-providers-in-angular-2.html http://blog.thoughtram.io/angular2/2015/11/23/multi-providers-in-angular-2.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)