Как сгенерировать токен CSRF в Reactjs и отправить в Play Framework? - PullRequest
0 голосов
/ 06 июня 2018

Я пытался отправить запрос на публикацию из формы реагирования для воспроизведения фреймворка.Выдает следующую ошибку:

Caused by: java.lang.RuntimeException: No CSRF token was generated for this request! Is the CSRF filter installed?

При использовании шаблонов воспроизведения токен CSRF обрабатывается из самого шаблона.Поскольку я пытаюсь использовать React для внешнего интерфейса, я не могу использовать шаблоны Play.Кто-нибудь может подсказать мне, как генерировать токен CSRF в React и передавать его в Play?

Заранее спасибо

1 Ответ

0 голосов
/ 06 июня 2018

Похоже, что вы можете настроить действие для создания токена CSRF (см. документы ):

Если вы не используете фильтр CSRF, вам также следует ввестиоболочки CSRFAddToken и CSRFCheck для принудительного добавления токена или проверки CSRF для конкретного действия.В противном случае токен будет недоступен.

import play.api.mvc._
import play.api.mvc.Results._
import play.filters.csrf._
import play.filters.csrf.CSRF.Token

class CSRFController(components: ControllerComponents, addToken: CSRFAddToken, checkToken: CSRFCheck) extends AbstractController(components) {
  def getToken = addToken(Action { implicit request =>
    val Token(name, value) = CSRF.getToken.get
    Ok(s"$name=$value")
  })
}

ПОЛУЧИТЕ это и передайте его в форму React:

<input type="hidden" name="csrfToken" value="1234567890abcdef"/>

(или добавьте его непосредственно в запрос POST.)

...