【问题标题】:Angular: How can I extract one attribute from API call response? [duplicate]Angular:如何从 API 调用响应中提取一个属性? [复制]
【发布时间】:2020-10-11 14:53:45
【问题描述】:

我有一个 Django Rest Framework 后端和一个 Angular 前端。
我使用 JWT 进行身份验证。当我尝试获取令牌时,我得到以下 JSON 格式的结果:

{
    "refresh": "jfksdajfkjsdkafjasdjfkjsdkfjksdfjfj8j2qfj2jjf",
    "access": "asjdfijajf8wjfw8ijf89wfj08jfw890ijf8wsf098wsfjaw"
}

我的代码如下所示:
Auth Service

private token: Observable<string>;

private params = {
    params: new HttpParams()
      .set('username', 'MYUSERNAME')
      .set('password', 'MYPASSWORD')
      .set('content-type', 'application/json')
  };

constructor(private http: HttpClient) { }

getToken(): Observable<any>{
    this.token = this.http.post('https://www.mywebsite.com/api-token', this.params);
    return this.token;
  }

应用程序


private url = 'https://www.mywebsite.com/api/movies';

private data = {
    headers: new HttpHeaders({
      'Authorization': `Bearer ${this.authService.getToken()}`,
      'content-type': 'application/json'
    })
  };

constructor(private http: HttpClient, private authService: AuthServiceService) { }

fetchMovies(): Observable<Movie[]> {
  console.log(this.data);
  return this.http.get<Movie[]>(this.url, this.data);
}

当我尝试运行此代码时,我得到一个“bad_authorization_header”
详细信息:“授权标头必须包含两个以空格分隔的值”

我认为发生错误是因为我将刷新和访问令牌一起传递。
如何仅提取访问令牌?

感谢您的帮助!

【问题讨论】:

  • 您需要订阅它。但是如果你在应用程序中设置这样的承载,你也可能会遇到异步问题。我建议您在登录时设置会话并在那里设置会话。

标签: angular ionic-framework request jwt


【解决方案1】:

将 getToken 更改为:-

getToken(): Observable<any>{
    return this.http.post('https://www.mywebsite.com/api-token', this.params).pipe(map((res)=>res.access));
  }

更改数据,例如:-

this.authService.getToken().subscribe((token)=>{
   this.data = = {
    headers: new HttpHeaders({
      'Authorization': `Bearer ${token}`,
      'content-type': 'application/json'
    })
});

【讨论】:

  • 当我尝试添加“res.access”时出现以下错误:“对象”类型上不存在属性“访问”。
  • 尝试打印资源,它会给你什么?
猜你喜欢
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 1970-01-01
  • 2020-02-11
相关资源
最近更新 更多