angular - Skicka autentiseringsuppgifter med angular2


Jag är ganska ny på Angular2, jag försöker göra en REST-förfrågan till en lokal API med autentiseringsuppgifter som skickas via HTTP-header; jag har följande kod:

        let headers = new Headers();
        headers.append('Accept', 'application/json')
        headers.append('Content-Type', 'application/json');
        headers.append('Authorization', 'Basic ' + btoa(user + ":" + password));
        let options = new RequestOptions({ headers: headers, withCredentials: true });

        return this.http.get("http://localhost:8080/api/test-credentials", options);

men jag får 401: Otillåten. Om jag försöker använda POSTMAN fungerar allt korrekt, den genererade base64-kodade token är samma, det är objektet för förfrågan:

[
    "http://localhost:8080/api/test-credentials",
    {
        "method":null,
        "headers":{
            "Accept":[
                "application/json"],
            "Content-Type":["application/json"],
            "Authorization":["Basic dXNlcjpwYXNzd29yZA=="]
        },
        "body":null,
        "url":null,
        "search":null,
        "withCredentials":true,
        "responseType":null
    }
]

Svar #1

Gör en förfrågan med autentisering på detta sätt:

  public getRequestWithBasicAuth(url: string, data): any {

        let headers = new Headers();
        headers.append("Content-Type", "application/json");
        headers.append("Authorization", "Basic " + data);

        let requestoptions = new RequestOptions({
            method: RequestMethod.Get,
            url: url,
            headers: headers
        });

        return this.http.request(new Request(requestoptions))
            .map((res: Response) => {
                let jsonObj: any;
                if (res.status === 204) {
                    jsonObj = null;
                }
                else if (res.status === 500) {
                    jsonObj = null;
                }
                else if (res.status === 200) {
                    jsonObj = res.json()
                }
                return [{ status: res.status, json: jsonObj }]
            })
            .catch(error => {
                return Observable.throw(error);
            });
    }

Sedan, vid inskickande av inloggningsanropet, kalla på ovanstående funktion:

  onLogin(formData) {
    let url = this.global_service.base_path + 'something...';
    let data = btoa(formData.email.toLowerCase() + ':' +  formData.password);

    this.global_service.getRequestWithBasicAuth(url, data)
      .subscribe(res => {
        if (res[0].status == 200) {
        // Do what you want after login..
        }
      }
}