Ste*_*hka 9 forms symfony1 csrf functional-testing
在Symfony中启用CSRF保护的情况下,为测试表单创建功能测试的最佳方法是什么?
目前,我必须在每个表单提交之前添加以下代码:
$form = new sfGuardFormSignin();
$token = $form->getCSRFToken();
$token_name = $form->getCSRFFieldName();
Run Code Online (Sandbox Code Playgroud)
然后我添加$ token和$ token_name来形成如下参数:
call('/login', 'POST', array (
'signin' =>
array (
'username' => $username,
'password' => $password,
$token_name => $token,
)))
Run Code Online (Sandbox Code Playgroud)
文档中建议的选项:
'_with_csrf' => true,
Run Code Online (Sandbox Code Playgroud)
根本不起作用.
是否有更简单的方法可以避免为每个手动测试表单添加令牌?或者有没有办法在运行测试时关闭csrf检查?
当你必须测试1-2个表单时,我上面描述的方式是可以的,但如果项目包含数十个独特的表单,则会变得很痛苦.
当然,如果直接调用url,则不能使用_with_csrf选项。您必须从表单页面单击“提交”按钮。就像这样:
click('signin', array('signin' => array('username' => $username, 'password' => $password), array('_with_csrf' => true)))
Run Code Online (Sandbox Code Playgroud)
字符串“signin”必须适合您的表单。您还可以使用更独立于标签的字符串,例如“form#myform input[type="submit"]”而不是“signin”,从而调整表单的 ID。
正如已经建议的,您可以禁用 CSRF 登录,这对于修改数据的表单非常有用。
| 归档时间: |
|
| 查看次数: |
3522 次 |
| 最近记录: |