我正在尝试发送帖子请求,因此我正在检索存储的令牌,但无法在我的请求函数中使用它返回[object object]
token: any; //to be used in post request
constructor(
private http: HttpClient,
private env: EnvService,
private storage: NativeStorage,
) {
this.storage.getItem('token').then((token) => {
this.token = token; //set token value
console.log('token', token); // will get the token in console
});
}
store(
name: String,
description: String,
phone: String,
province_id: String,
kota_id: String,
address: String,
logo: String,
banner: String,
) {
const headers = new HttpHeaders({
'Accept': 'application/json, text/plain',
'Content-Type': 'application/json',
'Authorization': 'Bearer' + " " + this.token //return [object object]
});
console.log('header', headers);
return this.http.post(this.env.STORES_URL,
{ name: name, description: description, phone: phone, province_id: province_id, kota_id: kota_id, address: address, logo: logo, banner: banner }, { headers: headers }
)
}
PS:我已经评论了每个部分,以便您可以更好地了解 问题来自哪里。
有什么想法吗?
我一直在使用这段代码,如果我使用
'Authorization': 'Bearer' + " " + JSON.stringify(this.token)
我会得到类似的东西
Authorization: Bearer {"success":{"token":"eyJ0eXAiOiJK....
仍然需要前进到令牌数组{"success":{"token":"
现在有什么主意吗?**
关于此处的评论请求,是我的令牌如何存储(在用户登录时)
login(email: String, password: String) {
return this.http.post(this.env.BASE_URL + '/login',
{ email: email, password: password }
).pipe(
tap(token => {
console.log(token);
this.storage.setItem('token', token)
.then(
() => {
console.log('Token Stored');
},
error => console.error('Error storing item', error)
);
this.token = token;
this.isLoggedIn = true;
return token;
}),
);
}
答案 0 :(得分:0)
我有一个类似的问题,是因为存在异步问题。
我这样解决:
获取令牌的函数(在名为 global 的类中:
getToken() {
return this.storage.get(this.token_key);
}
然后创建标题的函数:
async getHeaders() {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + await this.global.getToken()
})
};
return httpOptions;
}
当我给 post 打电话时:
async post(route, postdata){
this.http.post(route, postData, await this.getHeaders());
}
希望有帮助!
答案 1 :(得分:0)
本地存储仅支持string
数据类型。
因此,当将令牌存储在本地存储中时,请使用JSON.stringify()将对象转换为字符串:
this.storage.setItem('token', JSON.stringify(token));
从本地存储中读取令牌时,请使用JSON.parse()从字符串转换回来:
this.storage.getItem('token').then((token) => {
this.token = JSON.parse(token); //set token value
console.log('token', token); // will get the token in console
});
答案 2 :(得分:0)
基于我提出的问题中的更新1,我现在可以像这样的代码获取令牌,并且我的问题已解决。
Variable Groups
- Variable Group Name: SQL
- Variable Name: providerName
- Variable Value: SQLProvider
- Variable Group Name: Oracle
- Variable Name: providerName
- Variable Value: OracleProvider
不需要'Authorization': 'Bearer' + " " + this.token.success.token
或JSON.stringify()
感谢所有帮助。