Angular 5 HTTPClient Basic Authorization не работает - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь реализовать базовую авторизацию в Angular 5. Я использую HttpClient и HttpHeaders.Я пытаюсь подключиться к серверу tomcat с помощью службы REST.

Этот код входит в мою функцию входа в систему.

this.storage.set('credentials', credentials);
return new Promise((resolve, reject) => {
    let headers = new HttpHeaders();
    //btoa permet d'encoder le username et le mot de passe en base64
    headers = headers.append("Authorization", "Basic " + btoa(credentials.username + ':' + credentials.password));
    headers = headers.append("Content-Type", "application/x-www-form-urlencoded");

    //utilisation de stateless pour ne créer qu'une session http et ne pas créer une session par requete
    this.http.post(apiUrl+'ADUser', JSON.stringify({l: credentials.username, p: credentials.password}),{ headers:headers })
      .subscribe(res => {
        resolve((res: Response) => res.json());
      }, (err) => {
        console.log(err);
        reject();
        let alert = this.alertCtrl.create({
        title: 'L\'authentification a échoué',
        subTitle: 'Le nom d\'utilisateur ou le mot de passe est incorrect',
        buttons: ['OK']
      });
      alert.present();
      });
});    

Это на вкладке Сеть инструментов Chrome

Посмотрев на форумах и на этом сайте, я не нашел решения своей проблемы.Может ли кто-нибудь помочь мне с этой проблемой?

Заранее спасибо за ваш ответ и время, потраченное на помощь мне

1 Ответ

0 голосов
/ 24 мая 2018

Вот фрагмент кода, который я использую для публикации данных с учетными данными:

postData(appurl: string, data: string) {

    let body = new URLSearchParams();
    body.set("data", encodeURIComponent(data));

    const opt = {
      headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded'),
      withCredentials: true
    };

    return this.http.post(appurl, body.toString(), opt);

}

Надеюсь, это поможет ...

Кстати, я использую HttpClientModule

import { HttpClientModule } from '@angular/common/http';

Вот пример GET:

getData<T>(func: string) {
    let opts = this.getOptions(func);
    return this.http.get<T>(this.app.url, opts);
}

getOptions(func: string) {
    let opts = {
        params: new HttpParams().set("func", func).set("nodeid", this.app.nodeid),
        headers: new HttpHeaders(),
        withCredentials: true
    };
    return opts;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...