在Spray.io应用程序中传递变量

时间:2015-07-01 09:40:27

标签: akka spray

我正在使用Spray.io构建一个Web服务,它位于使用Akka构建的核心应用程序之上。

当我收到请求时,它会被一个喷射路径处理,然后喷射路径会将请求发送(使用告诉)给处理请求的actor并使用请求上下文返回响应。

我认证&在初始路由中授权用户,此身份验证/授权返回包含用户数据的用户对象。

我需要能够在核心Akka应用程序中的各个点访问此用户对象。我不想将它作为参数传递给每个发送给演员的消息(案例类),因为这看起来很混乱,因为有时我会将它传递给演员只是为了传递给它到另一个。是否有更好/推荐的方法使该对象可供系统中的其他参与者使用?它可以附加到请求上下文本身还是那种不好的做法?

由于

1 个答案:

答案 0 :(得分:2)

如果您尝试做的是避免在创建案例类实例时必须传递身份验证信息的样板,则可以向它们添加隐式参数列表:

scala> implicit val i = 1
i: Int = 1

scala> case class X(s: String)(implicit val y: Int)
defined class X

scala> val x = X("foo")
x: X = X(foo)

scala> x.y
res4: Int = 1

您仍然会在每条消息中传递身份验证信息,并且您无法在第二个参数列表中使用模式匹配,但根据您要完成的操作,它可能会有效。