0

我对 Symfony 2 比较陌生,我正在开发一个应用程序,该应用程序有一个仅限管理员的登录区域domain.com/admin/home/(它本身是一个名为 AdminBundle 的单独捆绑包),允许管理员管理产品

然而,同样的应用程序也将有一个 BlogBu​​ndle ,它需要一个管理区域来管理博客文章。

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

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

4

1 回答 1

1

一种方法是使用您的 security.yml 文件来保护一组路由。例如;

access_control:
   ...
   - { path: ^/admin, roles: [ROLE_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 以相同的方式进行操作

于 2013-01-11T14:25:40.883 回答