首页 > 解决方案 > Scala Playframework'方法invokeBlock不会覆盖任何东西'

问题描述

我已在我的 Playframework 项目中添加了 keycloak 身份验证,但它仅针对一个 Action 实现。我正在尝试创建一个自定义 Action 类,它将验证 JWT 并将其注入所有类。

我当前的端点代码:

val configData: Config = config.get[Config]("auth.keycloak")
val keycloakConfig = KeycloakConfig(configData)
val kcContext = KeycloakHelperContext(keycloakConfig)

def getUserProps() = Action {
    implicit request: Request[AnyContent] =>

    val user = kcContext.dpKcAuthentication.validateJWT
    Ok(write(Map("user" → user))).as(JSON)
}

我正在尝试创建的自定义 actionimpl:

val configData: Config = config.get[Config]("auth.keycloak")
val keycloakConfig = KeycloakConfig(configData)
val kcContext = KeycloakHelperContext(keycloakConfig)

override def invokeBlock[A](request: Request[AnyContent], block: Request[A] => Future[Result]): Future[Result] = {
  val user = kcContext.dpKcAuthentication.validateJWT(request)
  block(request)
}

它说:

方法 'invokeBlock' 不覆盖任何内容

当我将请求传递给 validateJWT 方法时会发生这种情况。我不在我的控制器中执行此操作,因为我只是说请求是隐式的并且它已传递到那里。

对于当前的实现,我需要在 invokeBlock 中隐式地发出请求,或者找到一种方法来传递它的 validateJWT 方法。

标签: scalaplayframeworkplayframework-2.0

解决方案


推荐阅读