Я использую 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)```
, но не вижу своей ошибкивызывается обработчик, и поэтому я не могу отправить сообщение об ошибке клиенту в моем конкретном формате.