在angular2中,好的,簡單的基本身份驗證服務。爲什麼在服務中使用let和new創建新對象時會得到一箇舊對象?
當用戶第一次登錄時,它可以工作。但是當他/她嘗試用另一個帳戶第二次登錄時。我在請求標題中獲得了雙基本驗證字符串,就像「Authorization:Basic YWRtaW46YWJjMTIz,Basic RMcasd9WJjMXoPj」。
這是服務:
@Injectable()
export class AuthenticationService {
private url: string = 'http://localhost:8080/api/test';
private username: string;
private password: string;
private authenticationStatus: boolean = false;
constructor(private http: Http) { }
authentication(username: string, password: string): Promise<boolean> {
let headers = new Headers(); // <== previous headers object with old Authorization string get back from grave.
console.log(headers);
headers.append("Authorization", "Basic " + btoa(username + ":" + password));
headers.append("Content-Type","application/json;charset=utf-8");
return this.http.get(this.url, { headers: headers })
.toPromise()
.then(response => { ...
這是我第一次嘗試角/打字稿應用。當我在這裏同時使用let和new時,我感到困惑的是沒有得到一個全新的對象。是否因爲頭類中的headersString是靜態的?我沒有看過角頭類api文檔。我試圖在let headers = new Headers();
之後立即致電headers.delete("Authorization");
,舊的授權標頭仍然存在。