как обработать ошибку, выданную пользовательскими действиями - PullRequest
0 голосов
/ 06 октября 2018

Я использую Silhouette библиотеку аутентификации.Он предоставляет клиенту Action s, который можно использовать следующим образом:

def newQuestion = silhouette.SecuredAction.async(parse.json) {...}

В моем коде SecuredAction выдает ошибку, поскольку клиент отправляет некоторые ошибочные данные.Как я могу обработать ошибку, выданную SecuredAction?Логика моего приложения находится внутри {...}, но ошибка возникает до того, как логика моего приложения срабатывает.

Я создал собственный класс обработчика ошибок, но он не вызывается!

@Singleton
class CustomHttpErrorHandler extends HttpErrorHandler {

    def onClientError(request: RequestHeader, statusCode: Int, message: String) = {
      println("client error: request "+request+", statusCode: "+statusCode+", message:"+message)
      Future.successful(
        Status(statusCode)(Json.toJson(JsonResultError(message)))
      )
    }

    def onServerError(request: RequestHeader, exception: Throwable) = {
      println("server error: request: "+request+", exception: "+exception.getMessage)
      Future.successful(
        InternalServerError(Json.toJson(JsonResultError(exception.getMessage)))
      )
    }

}

Маршрут к контроллеру:

case POST(p"/new-question") =>{ 
      println("add question request");
      controller.newQuestion();
    }

Я вижу только распечатки add question request и распечатки отладки с Silhouette

com.mohiva.play.silhouette.api.exceptions.AuthenticatorException: [Silhouette][jwt-authenticator] Error on parsing JWT token: eyJ... at com.mohiva.play.silhouette.impl.authenticators.JWTAuthenticator$$anonfun$unserialize$5.applyOrElse(JWTAuthenticator.scala:154)``` , но не вижу своей ошибкивызывается обработчик, и поэтому я не могу отправить сообщение об ошибке клиенту в моем конкретном формате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...