gpt4 book ai didi

forms - 在公共(public) REST 上下文中处理 symfony 表单中的 CSRF token

转载 作者:行者123 更新时间:2023-12-02 19:41:55 24 4
gpt4 key购买 nike

我正在开发我的第一个 symfony (3) 应用程序。它是一个可公开访问的 REST 服务。我正在使用 FOSRestBundle 执行此操作。我迟早必须添加一些管理表单,并且我可能希望直接创建它们(无需通过使用我自己的网络服务进行额外的工作)

我想知道在这种情况下如何处理 CSRF token 。我看到不同的解决方案:

  • 全局停用 CSRF token :我不想这样做
  • 创建两组表单,一组激活了 token :形成我的管理表单,另一组用于 REST API。 => 在这种情况下,其余 API 不能有后备 _format=html
  • 找到一种方法,通过 API_GROUP 为 api 使用者提供身份验证,并禁用该组的 token
    • 在我看来,这是最好的解决方案,但我不知道如何透明地做到这一点,而不影响我 future 管理员的身份验证,并且不需要在 REST 请求中提供凭据。
  • 使用事件监听器来破解 symfony 的身份验证机制,并在调用 REST API(除 _format=html 之外的所有 API)时进行身份验证

此(或其他)解决方案中哪一个对您来说最好,您将如何编码?

最佳答案

我找到了一种方法,也许不是最好的方法,但它有效:

$_format = $request->attributes->get('_format');
if ('html' == $_format) {
$form = $this->createForm(ItopInstanceUserType::class, $itopInstanceUser);
} else {
$form = $this->createForm(ItopInstanceUserType::class, $itopInstanceUser, ['csrf_protection' => false]);
}

关于forms - 在公共(public) REST 上下文中处理 symfony 表单中的 CSRF token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40866024/

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