各种捆绑的管理区域

时间:2013-01-08 23:58:22

标签: symfony

我对Symfony 2比较陌生,我正在开发一个应用程序,该应用程序在domain.com/admin/home/下面只有一个管理员登录区域(它本身是一个名为AdminBundle的独立软件包),允许管理员管理产品< / p>

然而,相同的应用程序也将有一个BlogBu​​ndle,需要管理区域来管理博客帖子。

解决此问题的最佳方法是,多个管理区域是否有最佳实践?

将博客管理部分保留在BlogBu​​ndle中以获得更好的可重用性/可移植性是有意义的,但是所有登录设置都将出现在AdminBundle中,这似乎是错误的。

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用security.yml文件来保护一组路由。例如;

access_control:
   ...
   - { path: ^/admin, roles: [ROLE_ADMIN] }

然后,当您创建操作时,您只需要为他们提供一个带有管理员前缀的路由,以保护他们免受除admin之外的所有用户的攻击。我的示例使用注释进行路由,但您也可以使用yml。

/**
 * Edit a Blog entity.
 *
 * @Route("/admin/blog/{id}/edit", name="blog_edit")
 * @Template()
 */
public function editAction()
{
...

或者您可以通过为类添加前缀来保护控制器中的每个操作:

/**
 * AdminBlog controller.
 *
 * @Route("/admin/blog")
 */
class AdminBlogController extends Controller
{
...

然后创建另一个控制器,处理向最终用户显示博客帖子并为他们提供不安全的路由。

如果你想通过安全和不安全的控制器/ methods.actions

以单独的捆绑方式保护其他区域,你可以通过相同的方式来做到这一点。