You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony应用Cypress测试中遭遇CSRF令牌无效错误求助

解决Symfony应用Cypress测试中的CSRF令牌无效问题

针对你遇到的CSRF令牌无效、路径断言失败问题,以下是具体的解决方案:

核心问题分析

  1. 测试用例拆分导致状态丢失:两个it块独立执行,即便保留了PHPSESSID,第二个测试运行时页面可能已重新加载,原CSRF令牌已过期或不匹配。
  2. 表单必填项缺失:测试中点击「Submit pin」前未输入验证PIN,表单验证失败后服务器会返回原页面并生成新的CSRF令牌,进而触发无效错误,同时路径无法跳转至目标页面。

具体解决方案

1. 合并相关测试用例

将发送PIN和验证PIN的逻辑合并到同一个it块中,保持会话和页面状态的连贯性:

describe('Old Affliates can create lead', () => {
  beforeEach(() => Cypress.Cookies.preserveOnce('PHPSESSID'));
  const payload = {
    emailLead: `test${Cypress._.random(1000, 99999)}@123.com`,
    mobileNumber: `077890${Cypress._.random(10000, 99999)}`,
    apiId: Cypress.env('id'),
    apiToken: Cypress.env('key'),
  };

  it('Send verification pin and verify phone number', () => {
    // 发送PIN并跳转至验证页面
    cy.contains('Send pin').click();
    cy.location('pathname').should('eq', '/phone-number/verify');
    
    // 输入验证PIN(根据测试环境配置,可固定值或从API/数据库获取)
    cy.get('input[name="phone_number_submit_pin[pin]"]').type('1234'); // 替换为实际有效PIN
    
    // 提交验证表单
    cy.contains('Submit pin').click();
    cy.location('pathname').should('eq', '/private-area/borrower');
  });
});

2. 确保正确保留会话Cookie

部分Symfony应用使用SFSESSID作为会话Cookie名称,而非PHPSESSID,需要调整Cookie保留规则:

beforeEach(() => {
  Cypress.Cookies.defaults({
    preserve: (cookie) => ['PHPSESSID', 'SFSESSID'].includes(cookie.name)
  });
});

3. 手动提取并提交CSRF令牌(备选方案)

如果自动点击仍有问题,可手动从表单中提取最新令牌,通过cy.request提交表单:

it('Verifies phone number', () => {
  cy.visit('/phone-number/verify');
  
  // 提取页面中的CSRF令牌
  cy.get('input[name="phone_number_submit_pin[_token]"]').invoke('val').then((csrfToken) => {
    // 构造表单数据(包含PIN和令牌)
    cy.request({
      method: 'POST',
      url: '/phone-number/verify',
      form: true,
      body: {
        'phone_number_submit_pin[pin]': '1234', // 替换为有效PIN
        'phone_number_submit_pin[_token]': csrfToken
      }
    });
    
    cy.location('pathname').should('eq', '/private-area/borrower');
  });
});

内容的提问来源于stack exchange,提问作者Sakshi_Goraniya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:43:10