gpt4 book ai didi

forms - 在Symfony中启用CSRF的功能测试表

转载 作者:行者123 更新时间:2023-12-04 04:08:33 26 4
gpt4 key购买 nike

创建功能测试以测试在Symfony中启用CSRF保护的表单的最佳方法是什么?

目前,我必须在每次提交表单之前添加以下代码:

  $form = new sfGuardFormSignin();
$token = $form->getCSRFToken();
$token_name = $form->getCSRFFieldName();

然后,我添加$ token和$ token_name形成如下形式的参数:
call('/login', 'POST', array (
'signin' =>
array (
'username' => $username,
'password' => $password,
$token_name => $token,
)))

文档中建议的选项:
'_with_csrf' => true,

根本不起作用。

有没有更简单的方法来避免向手动测试的每个表单中添加 token ?还是有一种方法可以在运行测试时关闭csrf检查?

当您必须测试1-2个表单时,我上面介绍的方法是可以的,但是如果项目包含数十个唯一表单,则将很痛苦。

最佳答案

当然,如果直接调用url,则不能使用_with_csrf选项。
您必须从表单页面通过,然后单击“提交”按钮。
像这样:

click('signin', array('signin' => array('username' => $username, 'password' => $password), array('_with_csrf' => true)))

字符串“signin”必须适合您的表格。您还可以使用更不依赖标签的字符串,例如'form#myform input [type =“submit”]'而不是'signin',以适应表单的ID。

正如已经建议的那样,您可以取消CSRF的登录,这对于修改数据的表单确实非常有用。

关于forms - 在Symfony中启用CSRF的功能测试表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301848/

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