如何实现Akka HTTP请求发布客户端标头授权

时间:2019-11-11 12:59:57

标签: scala http akka akka-http

我正在尝试实现Akka http客户端以进行邮寄请求,其中授权将在邮递员的标头中给出。我无法授权,以下是我的代码

this.setState({ type: result.type });

无论邮递员给我什么价值。它满足请求。我正在跳过什么?

我的用例是显示的结果仅在授权后显示

2 个答案:

答案 0 :(得分:2)

您正在HttpRequest上进行模式匹配。

您使用的requestHeader并不是您之前指定的,而是HttpRequest本身的 headers

一种解决方法可能是检查标题中的值:

case HttpRequest(HttpMethods.POST, Uri.Path("/GetTrackerData"), headers, entity, _) 
  if (headers.exists(h => h.name == "Authorization" && h.value ==  "admin"))  =>

答案 1 :(得分:0)

这是一个问题:

  case HttpRequest(POST, Uri.Path("/GetTrackerData"), requestHeader, entity, _) =>

这与requestHeader的当前值不匹配,它将创建一个包含requestHeader的当前标头的新值HttpRequest。因此,此匹配项将不会检查标题的Authorization字段。您将必须手动执行此操作。

更笼统地说,值得一看的是Akka HTTP对Route的支持,这是一种更清洁,功能更强大的服务器实现方式。