Платформа воспроизведения: play.api. mvc .DefaultJWTCookieDataCode c декодировать: не удалось декодировать JWT: null - PullRequest
0 голосов
/ 17 июня 2020

Я получаю много таких предупреждений:

play.api.mvc.DefaultJWTCookieDataCodec decode: could not decode JWT: null
java.lang.NullPointerException: null
    at play.api.mvc.JWTCookieDataCodec.$anonfun$decode$7(Cookie.scala:649)
    at scala.collection.MapLike$MappedValues.$anonfun$foreach$3(MapLike.scala:256)
    at scala.collection.TraversableLike$WithFilter.$anonfun$foreach$1(TraversableLike.scala:912)
    at scala.collection.Iterator.foreach(Iterator.scala:943)
    at scala.collection.Iterator.foreach$(Iterator.scala:943)

Я понятия не имею, откуда они приходят, почему, как или что-то еще.

1 Ответ

0 голосов
/ 17 июня 2020

О боже, с чего мы начнем.

У вас случайно есть что-то подобное в вашем коде?

Redirect(...).flashing("error" -> null)

Видите ли, "fla Механизм sh "в Play использует файлы cookie для хранения значений, и так уж получилось, что" JWT cook ie decoder "действительно не любит значения null. Во-первых, он ломает механизм fla sh там, где он используется, и как только null оказывается там, он начинает разбрасывать эти предупреждения более или менее повсюду.

Но, но, вы говорите , Я Scala разработчик! Никогда не использую null!

Очень хорошо. Но вы когда-нибудь использовали ex.getMessage, где ex - произвольное Exception?

Так и думали. Видите ли, Exception#getMessage может вернуть null. В частности, NullPointerException#getMessage возвращает значение null вместо строки «null»!

Yikes.

В любом случае, поэтому если у вас есть что-то вроде:

case Failure(ex) =>
  Redirect(...).flashing("error" -> ex.getMessage)

, это вероятный виновник.

...