gpt4 book ai didi

reactjs - 如何在Reactjs中生成CSRF token 并发送到Play框架?

转载 作者:行者123 更新时间:2023-12-03 14:18:43 25 4
gpt4 key购买 nike

我试图从 react 表单发送一个发布请求到 Play Framework 。它抛出以下错误:

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

使用 Play 模板时,CSRF token 是从模板本身处理的。由于我尝试使用 React 作为前端,因此我无法使用 Play 模板。谁能指导我在 React 中生成 CSRF token 并将其传递给 Play?

提前致谢

最佳答案

看起来您可以设置一个操作来生成 CSRF token (请参阅 docs ):

If you are not using the CSRF filter, you also should inject the CSRFAddToken and CSRFCheck action wrappers to force adding a token or a CSRF check on a specific action. Otherwise the token will not be available.

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 请求中。)

关于reactjs - 如何在Reactjs中生成CSRF token 并发送到Play框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50713068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com