0

使用Symfony2,我正在寻找一种在任何控制器之外轻松访问给定请求的主路由前缀的方法:

我试图找出处理与 Symfony2 中某些数据库元素相关的访问控制的最佳方法。

我想/application/APP_ID根据Subscription存储在数据库中来限制对路径中某些“应用程序”的访问。每个受限资源都将在此路径中。

订阅引用了一个用户实体和一个应用程序实体。它包括一个结束日期。在此结束日期之后,应用程序将不再可用。

限制应该是:对于以 开头的每个资源/application/APP_ID,我需要检查是否应该访问控制器。此前缀是静态的,实际上在 app/config/routing.yml 中定义为“前缀”,相应的路由名称存储在应用程序实体属性之一中。其他涉及的路由在独立的 routing.yml 文件中定义,例如位于主路由文件中MyAppBundle/Resources/config/routing.yml并导入到主路由文件中。

我能否轻松知道当前请求的路由(例如 /application/APP_ID/action/1)是否包含在定义前缀(例如 /application/APP_ID)的路由中,以便了解所关注的应用程序?

或者,有没有一种方法可以做到这一点,而不必给出必须为每个添加的应用程序、添加或修改的路由进行修改的路由或路径列表?

4

1 回答 1

1

您是否尝试开发自己的选民?如此处所述:http: //symfony.com/doc/current/cookbook/security/voters.html

您可以测试 $request->getRequestUri,而不是测试 $request->getClientIp。并且您可以使用 $this->container->get('doctrine') 访问教义。我认为您可以获得保护路径所需的所有信息。

几天前我将自己的 RoleHierachy 存储在数据库中,效果很好。

于 2013-11-09T11:27:13.863 回答