Silhouette for authentication(JWT) を使用して、 Play FrameworkでREST API を作成しています。
すべての安全な応答にいくつかのヘッダーを追加する必要があります (ユーザーがログインしている場合のみ)。そこで、フィルターを使用してそれらを追加することを考えました。しかし、私は理解できなかったこの奇妙なエラーを受け取ります:
リクエスト 'POST /signIn' の場合 [無効な Json: No content to map due to end-of-input at [Source: akka.util.ByteIterator$ByteArrayIterator$$anon$1@7bf4f7c1; 行: 1、列: 0]]
私のフィルター:
class SecuredFilter @Inject() (silhouette: Silhouette[DefaultEnv])(implicit val mat: Materializer, ec: ExecutionContext) extends Filter {
def apply(nextFilter: RequestHeader => Future[Result])(requestHeader: RequestHeader): Future[Result] = {
val action = silhouette.UserAwareAction.async { userAwareReq =>
userAwareReq.identity match {
case None => nextFilter(requestHeader)
case Some(identity) =>
nextFilter(requestHeader).map { result =>
result.withHeaders( /* add headers*/ )
}
}
}
action(requestHeader).run
}
}
フィルタ クラス:
class Filters @Inject() (csrfFilter: CSRFFilter, securityHeadersFilter: SecurityHeadersFilter,
securedFilter: SecuredFilter) extends HttpFilters {
override def filters: Seq[EssentialFilter] = Seq(csrfFilter, securityHeadersFilter, securedFilter)
}