Symfony2 - 处理HTTP /实体用户访问限制

时间:2015-06-08 06:21:06

标签: security symfony http

我们的小组讨论了如何在我们的应用程序中处理http限制。

在我们的应用中,用户可以创建产品。因此,我们有/products/product/1/show等路线来列出和显示用户的产品。用户无法看到其他用户的产品。该应用程序使用REST端点来获取数据。 API调用看起来像这个/api/product/1/来获取单个产品。

我们为其他类型的实体提供了更多的路由/ API端点。

问题是如何保护针对其他用户的路由/ API请求?

我们有两个解决方案:

  1. 使用防火墙和选民。选民获取当前URL /product/1/show并检查给定产品是否归当前登录用户所有。

  2. 使用没有防火墙的选民:http://symfony.com/doc/current/cookbook/security/voters_data_permission.html

  3. 使用角色系统:http://jmsyst.com/bundles/JMSSecurityExtraBundle/master/annotations

  4. 我更喜欢解决方案1.因为我们需要的所有信息(谁是产品的所有者)仍然存在。我们只需要获取实体并进行检查。 在解决方案2中,我们必须将选民逻辑分散到几个控制器上。

    是否有关于此问题的建议或经验?

1 个答案:

答案 0 :(得分:0)

如果我必须在这三者之间做出选择那将是1.但我建议采用不同的路线。我假设/ product / 1 / show中的数字1代表用户号码?如果是这种情况,我建议您制作没有数字的新路线,例如/ my-products / show。然后,控制器必须使用当前登录用户的ID。