最佳做法是仅允许访问所有者用户和管理员?

问题描述 投票:0回答:1

我正在使用FOSUserBundle来管理用户访问,在Symfony2中对网站进行编程。 我有一个名为“站点”的实体,可以有许多用户。 只有相关用户和管理员才有权访问Site:show操作。

我不知道是否可以在security.yml执行此操作,或者是否必须直接在控制器中或其他位置执行此操作。 推荐的方法是什么?

谢谢。

php symfony security fosuserbundle
1个回答
5
投票

如果要在对象级别限制每个用户的访问权限,那么您正在寻找ACLProblematicAclManagerBundle是一个很好的包装器,可简化控制器中的ACL使用。

否则,如果您想限制每个角色的访问权限,则可以使用security.yml中定义的路由和角色。

以下是其外观示例:

access_control:
  - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  - { path: ^/admin, role: ROLE_ADMIN }
  - { path: ^/.*, role: [IS_AUTHENTICATED_ANONYMOUSLY] }

在您的控制器中,您还可以使用:

use JMS\SecurityExtraBundle\Annotation\Secure;

/**
 * @Route("/home", name="home") 
 * @Secure(roles="ROLE_USER")
 */
public function indexAction()
{
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.