使用CakePHP 1.3 ,我有一个(工作)表单,动态创建表单字段(通过Javascript)。一切都很好,通过saveAll()保存了多个模型,它很漂亮。
但是,每当我启用安全组件(希望得到一些自动魔法CSRF保护)时,我就会陷入404黑洞。
据我所知,这可能是(可能是!)由动态创建的表单字段引起的,如文档中所述。
有没有办法让他们一起玩得很好?
答案 0 :(得分:5)
你也不能吃蛋糕。 (茶清!)
CSRF保护意味着只允许提交某个表单字段列表。此列表在表单创建时决定并修复。您不能受CSRF保护和动态更改表单中的字段。
有两种解决方案:
如果动态创建的字段的数量和名称有限,请在表单中创建它们并使用CSS隐藏它们,然后使用Javascript显示它们。这样您就不会动态创建字段,而只是动态显示它们
如果这不起作用,您可以使用$disabledFields
option将字段列入白名单(同样,只有事先知道其名称)或使用$validatePost
选项完全禁用CSRF。