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

Symfony 7中如何修改无效CSRF令牌的提示信息?

如何修改Symfony 7登录表单CSRF令牌无效的提示信息?

我在Symfony 7环境中安装了symfony/translation组件,想要修改登录表单CSRF令牌无效时的默认提示信息(原提示为“Invalid CSRF token.”),但多次配置后均未生效,具体情况如下:

当前配置

/config/packages/translation.yaml

framework:
    default_locale: en
    translator:
        default_path: '%kernel.project_dir%/translations'
        fallbacks:
            - en
        providers:

已尝试的无效操作

  • 在/translations/validators.en.yaml中添加配置:
    csrf_token:
      invalid: "Wakka wakka"
    
  • 按建议修改validators.en.yaml内容:
    "Invalid CSRF token." : "wakka wakka"
    
  • 创建/translations/security.en.xlf和/translations/security.en.yaml并配置翻译,但仍无效果
  • 已执行缓存清除操作

正确解决方案

登录表单的CSRF验证错误信息属于Security组件的翻译域,而非表单验证的validators域,需按以下步骤配置:

  1. 在translations/目录下创建security.en.yaml文件,内容如下:
    "Invalid CSRF token.": "自定义提示内容,例如:CSRF令牌无效,请刷新页面后重试"
    
  2. 确保应用当前使用的locale为en(与翻译文件的locale匹配),若使用其他语言,需创建对应locale的文件(如security.zh_CN.yaml)
  3. 清除缓存:
    php bin/console cache:clear
    # 生产环境需添加参数
    php bin/console cache:clear --env=prod
    

关键说明

  • Symfony中不同组件的错误提示对应不同的翻译域:登录CSRF错误属于security域,表单字段验证错误属于validators域
  • 翻译文件命名需遵循[domain].[locale].[format]规则,例如security.en.yaml表示security域、英文语言、yaml格式的翻译文件
  • 若原提示文本包含空格、标点等特殊字符,yaml键需用双引号包裹,确保解析正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:42:15