Symfony 1.4:表单中CSRF的自定义错误消息

任何人都可以告诉我在Symfony 1.4中为表单定制CSRF令牌错误消息的位置/方式.我正在使用sfDoctrineGuard进行登录,特别是在会话用完且你仍然打开页面时,它会抛出一个非常用户不友好的错误:“检测到CSRF攻击”.类似“此会话已过期.请返回主页再试一次”听起来更好.

在表单类中执行此操作的正确方法是什么?

谢谢.

解决方法

唯一的方法似乎是覆盖sfForm :: addCSRFProtection().

在/lib/form/BaseForm.class.PHP中,您可以添加以下代码

class BaseForm extends sfFormSymfony
{
    public function addCSRFProtection($secret = null)
    {
        parent::addCSRFProtection($secret);
        if (array_key_exists(self::$CSRFFieldName,$this->getValidatorSchema())) {
            $this->getValidator(self::$CSRFFieldName)->setMessage('csrf_attack','This session has expired. Please return to the home page and try again.');
        }
    }
}

调用方法之后,检索与CSRF字段关联的验证器,并更改代码csrf_attack的消息.

编辑:您还需要检查验证器是否存在.某些表单可能会禁用其CSRF保护!

希望这可以帮助!

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些