我对Symfony 2比较陌生,我正在开发一个应用程序,该应用程序在domain.com/admin/home/
下面只有一个管理员登录区域(它本身是一个名为AdminBundle的独立软件包),允许管理员管理产品< / p>
然而,相同的应用程序也将有一个BlogBundle,需要管理区域来管理博客帖子。
解决此问题的最佳方法是,多个管理区域是否有最佳实践?
将博客管理部分保留在BlogBundle中以获得更好的可重用性/可移植性是有意义的,但是所有登录设置都将出现在AdminBundle中,这似乎是错误的。
答案 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
以单独的捆绑方式保护其他区域,你可以通过相同的方式来做到这一点。