【问题标题】:Symfony2/DC2/PHP: prevent the user from creating someone elses entitySymfony2/DC2/PHP:防止用户创建别人的实体
【发布时间】:2012-02-24 13:10:10
【问题描述】:

我有实体 Floor 和 LeaseTerm。 Floor 可以有多个 LeaseTerms。

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

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

【问题讨论】:

    标签: php forms symfony


    【解决方案1】:

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

    在 Symfony 2 中作为一个特定的实现,这可以通过直接在控制器中的逻辑来实现,或者也可以在“Data Transformer”和/或Custom Validator 的帮助下实现。

    希望这会有所帮助。

    【讨论】:

    • 所以,在 Symfony 2 的上下文中,我必须比较登录的 users_id 和 $floor->getOwner()->getId()?如果它们不匹配,我想一个好主意是抛出异常。
    • 是的,这就是想法:)。你可能想抛出一个异常,是的——你可以稍后处理一个“输入异常”或任何你想用某种 403 Forbidden、404 或其他自定义响应来调用它的东西。
    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    相关资源
    最近更新 更多