首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala Play 2.5包含Deadbolt-2动作的动作组合

Scala Play 2.5包含Deadbolt-2动作的动作组合
EN

Stack Overflow用户
提问于 2016-12-25 20:39:53
回答 0查看 188关注 0票数 0

我正在开发一个Scala Play应用程序,需要许多Controller操作,通过在响应的HTTP头中设置参数来禁用浏览器的缓存。我决定创建一个NoCache复合动作,因为我也在使用DeadBolt2(并且需要一个DeadBolt2的AuthenticatedRequest[_]),所以它看起来是这样的:

代码语言:javascript
复制
package action

import be.objectify.deadbolt.scala.AuthenticatedRequest
import play.api.http.HeaderNames
import play.api.mvc._

import scala.concurrent.Future
import scala.util.Success

case class NoCache[A](action: Action[A]) extends Action[A] with HeaderNames {
  def apply(request: AuthenticatedRequest[A]): Future[Result] = {
    action(request).andThen {
      case Success(result) => result.withHeaders(
        (CACHE_CONTROL -> "no-cache, no-store, must-revalidate"),
        (PRAGMA -> "no-cache"),
        (EXPIRES -> "0")
      )
    }
  }

  lazy val parser = action.parser
}

但是在尝试将此Action混合到我的Controller action实现中时,它将不会编译。

代码语言:javascript
复制
def link = deadbolt.SubjectPresent()() andThen NoCache() { implicit request =>

代码语言:javascript
复制
def link = NoCache(deadbolt.SubjectPresent()()) { implicit request =>

但我看不到如何组合它们。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41321197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档