我正在做一个需要用户名和密码的登录屏幕。如果登录成功,服务器将返回一个令牌。然后,我尝试调用另一个函数来获取用户信息,但是没有传递authorization头。我在postman上尝试我的服务器方法,它工作得很好,所以我相信问题出在头上。有人能建议我该做些什么吗?
let url = urlConst.Login;
let params1 = new HttpParams();
let loader = this.loadingcontroller.create({
content: stringEngConst.signinngin
});
let attributes = {
username: this.uname.value.toLowerCase(),
password: this.password.value,
grant_type: "password"
};
var headers = new HttpHeaders();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let body = 'username=' + this.uname.value.toLowerCase() + '&password=' + this.password.value + '&grant_type=password';
let data: Observable < any > = this.http.post(url, body, {
headers: headers
});
loader.present().then(() => {
data.subscribe(result => {
if (result.access_token != null) {
this.signintoken = result.access_token;
this.storage.set(storageConst.SIGN_IN_TOKEN, result.token_type + " " + result.access_token);
headers.append('Authorization', 'Bearer ' + this.signintoken);
let url1 = 'http://localhost:57940/API/Account/GetUserInfo/';
let info: Observable < any > = this.http.get(url1, {
headers: headers
});
info.subscribe(result => {
/*Do Something*/
});
}
请注意,result.access_token != null为真。我成功地拿回了令牌。但是它不会再次传递给第二个url (info)。
发布于 2018-06-26 21:42:42
看起来像这样,所以post可能会为你解决问题:https://stackoverflow.com/a/47805759/6599076
您可能想要使用:
headers = headers.append('Authorization', 'Bearer ' + this.signintoken);
发布于 2018-06-26 22:32:49
您正在使用与第一个http请求相同的标头:
var headers = new HttpHeaders();
headers.append('Content-Type', 'application/x-www-form-urlencoded');根据后续调用的结束点,您可能需要以不同的方式设置标头:
尝试使用以下命令创建新标头
var headers2 = new HttpHeaders();
headers.append('Content-Type', 'application/json');或者完全摆脱Content-Type,这取决于您的终结点所期望的。
另外,如果你正在使用IONIC3,检查一下你使用的是哪个Http模块(HttpClient或者更老的)是值得的,因为它们在处理请求选项的方式上有一些不同。
https://stackoverflow.com/questions/51042134
复制相似问题