在Symfony中啓用CSRF保護功能以創建功能測試以測試表單的最佳方式是什麼?在Symfony中啓用CSRF的功能測試表格
目前,我有各種形式submittion之前添加以下代碼:
$form = new sfGuardFormSignin();
$token = $form->getCSRFToken();
$token_name = $form->getCSRFFieldName();
然後我添加$令牌和$ TOKEN_NAME形成這樣的參數:
call('/login', 'POST', array (
'signin' =>
array (
'username' => $username,
'password' => $password,
$token_name => $token,
)))
選項中建議該文檔:
'_with_csrf' => true,
根本不起作用。
是否有更簡單的方法來避免爲每個手動測試的表單添加標記?或者有沒有辦法在運行測試時關閉csrf檢查?
我上面描述的方式是可以的,當你必須測試1-2個表單時,如果項目包含幾十個獨特的表單,那麼這會變成一種痛苦。
T他的文檔選項使用BaseForm的一個實例來擴展; CSRF令牌是使用表單類型生成的,所以MyFooForm!= BaseForm因此這就是爲什麼該選項失敗的原因......您的選擇是我在項目中完成的方式。 – richsage
還有另一個原因,爲什麼它也失敗了。它將csrf標記添加到參數列表中,但通常以它在數組中的形式(如上面的示例)。所以它完全沒用:-(。 感謝您的評論。 – Stepashka