首页 > 解决方案 > Scala & Play - 将参数传递给过滤器

问题描述

我有一个过滤器,它应该在结果头中发送一个令牌,这需要在控制器中计算。

class TokenFilter @Inject()(implicit val mat: Materializer, 
ec: ExecutionContext, token: String) extends Filter{
def apply(nextFilter: RequestHeader => Future[Result])
       (requestHeader: RequestHeader): Future[Result] = {
nextFilter(requestHeader).map { result =>
  result.withHeaders("token" -> token)
}}}

控制器如下所示:

def getAll(meta: MetaData): Action[AnyContent] = deadbolt.Restrict(group)(parse.default) { implicit request =>
myService.getAll(meta).map(result => {
  implicit val token: String = getToken
  val list: Seq[Resp] = result._2.map(exp => Mapper(exp))
  Ok(Json.toJson(ListResponse.apply(meta, result._1, list)))
})}

看起来获取令牌的函数工作正常,但过滤器无法访问令牌。有任何想法吗?谢谢

标签: scalaplayframeworkhttp-headers

解决方案


推荐阅读