当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《Symfony1.4:表单中CSRF的自定义错误消息》经验,为你挑选了1个好方法。

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

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

谢谢.



1> naag..:

唯一的方法似乎是覆盖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保护!

希望这可以帮助!

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有