scala - 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 方法。
解决方案
推荐阅读
- c# - HttpContext.SignInAsync() 是针对什么登录的?
- python - 我正在尝试在 linux 上启动 chrome webdriver,但它挂起,然后关闭
- java - 如何更新数据库中类型为“double”的列?
- python - Django打开一个传递POST数据的外部链接
- ruby-on-rails - 如何使用 Ruby 运行构建包而不超时
- python - 使用 Python 3.7.3,从给定目录中的加权文件列表中随机选择/选择
- sql - 在sql中减去时间戳
- sh - 将 zsh 循环转换为 sh 语法
- java - “线程中的异常”mainHow to resolve this exception: “java.lang.NoClassDefFoundError: net/bytebuddy/NamingStrategy...”
- windows - cpp_redis::subscriber -> connect 导致异常:connect() 失败