gpt4 book ai didi

javascript - 类型 'csrf_token' 上不存在属性 'Object'

转载 作者:行者123 更新时间:2023-12-01 02:13:57 24 4
gpt4 key购买 nike

这是一个简单的问题。

我正在尝试使用 Angular 5 和 Drupal 8 作为后端进行登录。连接工作正常,我可以将 JSON 发送到 Drupal 站点,它会返回一个 CSRF token 。

现在我想将它添加到我的本地存储中。

这是我的login.service.ts中的登录功能

login (user: User): Observable<User> {
const url = `${this.mainUrl}user/login?_format=json`;
const loginReturn = this.http.post(url, user, httpHaljson);
console.log (loginReturn);

return loginReturn
.map(user =>
{
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify(user));
return user;
})
.pipe(
tap((user: User) => this.log(`Token `+ JSON.stringify(user.csrf_token))),
catchError(this.handleError<User>('login'))
);
}

如果我尝试做这样的事情:

.map(user => 
{
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify(user));
console.log ('object' + JSON.stringify(user));
console.log ('CSRF TOKEN' + JSON.stringify(user.csrf_token));
return user;
})

它向我显示了我的 csrf token 的控制台日志,非常好,但我在控制台上收到此错误:

控制台:

object{"current_user":{"uid":"4","name":"cravushedal"},"csrf_token":"lY4vX3Ns_PrBkpPqoit4PEuEhXlimhKJ-xBt6ouUMXc","logout_token":"KOvJljv47rO3tRV3OG37ZKH57VWAG2gGxPe8nwCmN7A"}

login.service.ts:39 CSRF TOKEN"lY4vX3Ns_PrBkpPqoit4PEuEhXlimhKJ-xBt6ouUMXc"

It says: ERROR in src/app/login.service.ts(37,65): error TS2339: Property 'csrf_token' does not exist on type 'Object'. enter image description here

最佳答案

正如评论中提到的,这是由于 Typescript 无法计算 user 的类型属性。

当您调用 HttpClient#post without a type argument时,它返回 Observable<Object>实例,和Object没有任何属性(并且与 any 不同,它不“灵活”)。

您需要调用 HttpClient#post这样,返回值就变成Observable<User> :

this.http.post<User>(url, user, httpHaljson); 

您还可以在使用 map 时指定其实际类型:

.map((user: User) => ...

关于javascript - 类型 'csrf_token' 上不存在属性 'Object',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49578995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com