如何将自定义对象从 Play Framework 过滤器传递给控制器?
How to pass custom objects from Play Framework filters to controllers?
我想将自定义对象从我的游戏基本过滤器传递到我的控制器。我怎样才能做到这一点。
示例过滤器:
class CustomFilter @Inject() (implicit val mat: Materializer) extends Filter {
def apply(nextFilter: RequestHeader => Future[Result])(requestHeader: RequestHeader): Future[Result] = {
// along with request header I want to pass a custom object
nextFilter(requestHeader)
}
}
你可以使用 Request Attributes:
object Attrs {
val whatever: TypedKey[WhatEver] = TypedKey.apply[WhatEver]("we")
}
// in your filter:
val newReq = req.addAttr(Attrs.whatever, WhatEver(...))
nextFilter(newReq)
// in your action function:
val whatever: WhatEver = req.attrs(Attrs.WhatEver)
// OR -- for extra safety
val whatever: Option[WhatEver] = req.attrs.get(Attrs.WhatEver)
我想将自定义对象从我的游戏基本过滤器传递到我的控制器。我怎样才能做到这一点。
示例过滤器:
class CustomFilter @Inject() (implicit val mat: Materializer) extends Filter {
def apply(nextFilter: RequestHeader => Future[Result])(requestHeader: RequestHeader): Future[Result] = {
// along with request header I want to pass a custom object
nextFilter(requestHeader)
}
}
你可以使用 Request Attributes:
object Attrs {
val whatever: TypedKey[WhatEver] = TypedKey.apply[WhatEver]("we")
}
// in your filter:
val newReq = req.addAttr(Attrs.whatever, WhatEver(...))
nextFilter(newReq)
// in your action function:
val whatever: WhatEver = req.attrs(Attrs.WhatEver)
// OR -- for extra safety
val whatever: Option[WhatEver] = req.attrs.get(Attrs.WhatEver)