gpt4 book ai didi

Symfony:使 CSRF token 可用于所有 Twig 模板

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

我的应用到处都有 AJAX 请求,我想用 CSRF token 保护它们。但是,我不想生成 CSRF token 并将其传递给 Twig 渲染器以便在 JavaScript 中使用,我希望 CSRF token 在 Twig 渲染的每个 html 页面中随时可用。

我看到Laravel好像把它放在了一个meta标签里,所以我可以很容易地用JavaScript抓取它。但是如何在 Symfony 中做到这一点?如何在每个页面中插入此标记?

或者这不是好的做法吗?

最佳答案

当然这是一个很好的做法!!

为此,您在 symfony/twig 中有内置函数 csrf_token('key')

例子:

<a href="{{ path('product_remove', {id: product.id, csrf: csrf_token('product') }) }}" 
class="btn btn-info">Remove</a>

从 Controller ,你只需要检查它:

/**
* @Route("/product/remove/{csrf}/{id}", name="product_remove")
*/
public function removeProductAction($csrf, $id)
{
if ($csrf !== $this->get('security.csrf.token_manager')->getToken('product')->getValue()) {
throw new InvalidCsrfTokenException('Invalid CSRF token');
}

// delete $id

// cleans up url
return $this->redirectToRoute('product_list');
}

all the things

关于Symfony:使 CSRF token 可用于所有 Twig 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44613585/

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