【发布时间】:2012-02-24 13:10:10
【问题描述】:
我有实体 Floor 和 LeaseTerm。 Floor 可以有多个 LeaseTerms。
在我的 LeaseTerm CREATE 表单中,我有一个隐藏的 floor_id 字段。
我的问题是:我怎样才能有效地防止用户自己更改 floor_id 字段并为他不拥有的楼层创建 LeaseTerms(每个楼层都有它的所有者)?
【问题讨论】:
我有实体 Floor 和 LeaseTerm。 Floor 可以有多个 LeaseTerms。
在我的 LeaseTerm CREATE 表单中,我有一个隐藏的 floor_id 字段。
我的问题是:我怎样才能有效地防止用户自己更改 floor_id 字段并为他不拥有的楼层创建 LeaseTerms(每个楼层都有它的所有者)?
【问题讨论】:
从概念上讲,“如何”是在提交时验证 floor_id,确保当前用户拥有/有权访问该楼层。从理论上讲,即使他们确实更改了它,只要它仍然是他们可以访问的 id,该操作可能仍然有效(如果不是,则需要对提交上下文进行额外验证)。
在 Symfony 2 中作为一个特定的实现,这可以通过直接在控制器中的逻辑来实现,或者也可以在“Data Transformer”和/或Custom Validator 的帮助下实现。
希望这会有所帮助。
【讨论】: