我正在使用 Spray.io 构建 Web 服务,该服务位于使用 Akka 构建的核心应用程序之上。
当我收到一个请求时,它会被一个喷射路由处理,该路由又将(使用告诉)将请求发送到处理请求并使用请求上下文返回响应的参与者。
我在初始路由中对用户进行身份验证和授权,并且此身份验证/授权返回一个包含用户数据的用户对象。
我需要能够在各个点访问核心 Akka 应用程序中的这个用户对象。我不想将它作为参数传递给发送给 Actor 的每条消息(案例类),因为这看起来很困惑,因为有时我会将它传递给 Actor ,以便它可以传递给另一个 Actor .是否有更好/推荐的方法使系统中的其他参与者可以使用此对象?它可以附加到请求上下文本身还是不好的做法?
谢谢
最佳答案
如果您想要做的是避免在创建案例类实例时必须传递身份验证信息的样板,您可以向它们添加一个隐式参数列表:
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
您仍然在每条消息中传递身份验证信息,并且您不能在第二个参数列表上使用模式匹配,但取决于您要完成的工作,它可能会起作用。
关于akka - 在 Spray.io 应用程序中传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31157789/