好吧,angular2中简单的基本身份验证服务。
当用户第一次登录时,它可以正常工作。但是当他/她尝试使用其他帐户第二次登录时。我在请求标题中有双重基本身份验证字符串,它类似于"授权:基本YWRtaW46YWJjMTIz,基本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 => { ...
这是我第一次尝试使用angular / typescript应用程序。当我在这里使用let和new时,我感到困惑的是没有得到一个全新的对象。是因为header类中的headersString是静态的吗?我确实研究过angular headers class api doc。我尝试在headers.delete("Authorization");
之后立即致电let headers = new Headers();
,旧的授权标题仍然存在。