如何用api传递用户名和密码?

时间:2017-09-14 06:01:58

标签: angular

我有一个API。如果您打开,则应输入用户名和密码。如何获取该API中的数据?如果我写get("....api-url...."),则会显示unauthorized error。如何将用户名和密码传递给该API?

constructor(private _http: Http) {
    this.getMyBlog();
}

private getMyBlog() {
    return this._http.get('http://localhost:8088/.../...')
        .map((res: Response) => res.json())
        .subscribe(data => {
            this.data = data;
            console.log(this.data);
        });
}

2 个答案:

答案 0 :(得分:5)

我假设您要将其与GET请求一起作为查询参数发送?

这是一种可怕的不良做法(用户密码是网址的一部分 - 虽然正文内容可能受SSL保护,但攻击者可以完全看到实际的网址) - 阅读更多@ https://www.fullcontact.com/blog/never-put-secrets-urls-query-parameters/

此外,不推荐使用HTTP模块 - 请查看使用HttpClientModule(https://angular.io/guide/http

如果您仍想这样做:

public getMyBlog(username, password): Observable<any> {
  const params = new HttpParams().set('username', username).set('password', password);
  return this.http.get('...apiurl...', { params });
}

发帖:

public getMyBlog(username, password): Observable<any> {
  const body = { username, password };
  return this.http.post('...apiurl...', body);
}

获取请求的更好方法是在标头中发送令牌:

public getMyBlog(token) {
  const headers = new HttpHeaders().set('Authorization', token);
  return this.http.get('...apiurl...', { headers });
}

答案 1 :(得分:0)

使用``然后你可以绕过你的字符串而不是''。 在发送密码之前,请尝试做一些加密密码。

public getMyBlog(username, password): Observable<any> { return this._http.get(http://localhost:8088/${username}/${password}