Angular 5 HTTPClient基本授权不起作用

时间:2018-05-24 12:57:13

标签: angular rest authorization httprequest

我正在尝试在Angular 5中实现基本授权。我正在使用HttpClient和HttpHeaders。我正在尝试使用REST服务连接到tomcat服务器。

此代码位于我的登录功能中。

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();
      });
});    

This is from the Chrome tools Network tab

在论坛和本网站上查看后,我找不到解决问题的方法。 有人可以帮我解决这个问题吗?

提前感谢您的回复和帮助我的时间

1 个答案:

答案 0 :(得分:0)

这是我使用凭证发布数据的一段代码:

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);

}

我希望这会有所帮助......

btw我使用的是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;
}