如何使用授权ActionBuilder保护静态文件在Play 2.5 Framework中

时间:2017-07-27 08:16:17

标签: scala playframework playframework-2.5

我在Play 2.5应用程序中的大多数REST端点都使用了ActionBuilder:

  def IfAuthorized(auths: Authorizations*): ActionBuilder[AuthRequestWithAuthorization] = {
    new MyAuthActionBuilder(auths.toList)
  }

我可以用作:

  def status = IfAuthorized(Editor).async { implicit authReq =>
      //eventually return Result
  }

现在我想在同一ActionBuilder中包装静态文件请求。目前我使用这个oneliner,这使我能够提供html,js,css等,所有返回/缓存都没有受到干扰:

GET         /ui/*file                  controllers.Assets.versioned(path="/public", file: Asset)

我不确定如何推动ActionBuilder。返回初始html页面的不良尝试包括:

  def index()= IfAuthorized(Editor) {  authReq =>
    val contentStream = this.getClass.getResourceAsStream("/public/index.html")
    Ok.chunked(Enumerator.fromStream(contentStream)).as(HTML)
  }

Action只能返回特定的html文件,而我希望从1路由返回的所有静态资源受我的自定义ActionBuilder保护

1 个答案:

答案 0 :(得分:1)

您需要实施自己的资产控制器:路线

QtMeta

将指向以下端点:

GET   /auth/*file   controllers.AuthAssets.at(path="/public", file: String)