我正在尝试在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
在论坛和本网站上查看后,我找不到解决问题的方法。 有人可以帮我解决这个问题吗?
提前感谢您的回复和帮助我的时间
答案 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;
}