谁能告诉我在哪里/如何为 Symfony 1.4 中的表单自定义 CSRF token 错误消息。我正在使用 sfDoctrineGuard 进行登录,特别是在这种形式中,每当 session 用完而您仍然打开页面时,它会抛出一个对用户非常不友好的错误:“检测到 CSRF 攻击”。诸如“此 session 已过期。请返回主页并重试”之类的内容听起来更好。
在表单类中执行此操作的正确方法是什么?
谢谢。
最佳答案
唯一的方法似乎是覆盖 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 保护!
希望这可以帮助!
关于forms - Symfony 1.4 : Custom error message for CSRF in forms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2578397/