HTTP获取请求基本身份验证?

时间:2020-07-31 12:52:13

标签: angular http ionic-framework

我正在尝试在Angular Ionic中进行基本身份验证获取请求。 我正在将用户名和密码从我的端传递到服务器,并尝试获取CSRF令牌和会话ID。但是我收到500个内部服务器错误。 所以我正在使用这种方法登录:

public login(username: string, password: string): Observable<Object>{
  return this.httpClient.get(`myUrl`,{
    headers: new HttpHeaders({
      Authorization: "Basic" +  window.btoa(username + ':' + password)
    })
  });
}

我认为我应该使用httpInterceptor来拦截请求,有人可以告诉我该怎么做吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

您可以尝试在基本符号后放置一个空格

Authorization: "Basic " +  window.btoa(username + ':' + password)

答案 1 :(得分:0)

您的服务器如何期望数据以及设备如何将数据发送到服务器是一个问题。由于这种不匹配,服务器无法处理数据并且正在调试。

取决于服务器端点配置,另一种方式可能是,不在标头中发送身份验证数据。您的登录api调用可能如下所示。

 login(login, password): Observable<any> {
        return this.http.post(`myUrl`, {
            login_id : login,
            password : password
        });
    }

然后,您的服务器对用户进行身份验证,并使用身份验证令牌(CSRFToken)进行响应,然后您将其传递给api调用的标头。

我建议您花一些时间在应用程序中实现HTTP请求拦截器。展望未来,当应用程序必须使用多个api时,您不必为所有api调用单独添加令牌。

if (this.globalConst.authToken) {
  newHeader['Authorization-Key'] =this.globalConst.authToken;
  request = request.clone({
    setHeaders: newHeader
  });
}
return next.handle(request);

Tutorial