Symfony2/DC2/PHP:防止用户创建其他人的实体


Symfony2/DC2/PHP: prevent the user from creating someone elses entity

我有实体Floor和LeaseTerm。楼层可以有许多租赁条款。

在我的LeaseTerm CREATE表单中,我有一个隐藏的floor_id字段。

我的问题是:如何有效地防止用户自己更改floor_id字段,并为他不拥有的楼层创建LeaseTerms(每个楼层都有自己的所有者)?

从概念上讲,"如何"在提交时验证floor_id,确保当前用户拥有/有权访问floor。理论上,即使他们确实更改了它,只要它仍然是他们可以访问的id,该操作可能仍然有效(如果不是,则需要对提交上下文进行额外的验证)。

在Symfony 2中,作为一种特定的实现方式,这可以通过控制器中的逻辑直接实现,也可以通过"数据转换器"和/或自定义验证器的帮助实现。

希望这能有所帮助。