我正在 Symfony2 中编写一个站点,使用 FOSUserBundle 来管理用户访问。我有一个名为“站点”的实体,它可以有很多用户。只有相关用户和管理员才能访问 Site:show 操作。
我不知道是否可以这样做,security.yml
或者我是否必须直接在控制器或其他地方进行。推荐的方法是什么?
谢谢。
我正在 Symfony2 中编写一个站点,使用 FOSUserBundle 来管理用户访问。我有一个名为“站点”的实体,它可以有很多用户。只有相关用户和管理员才能访问 Site:show 操作。
我不知道是否可以这样做,security.yml
或者我是否必须直接在控制器或其他地方进行。推荐的方法是什么?
谢谢。
如果您想在对象级别限制每个用户的访问,那么您正在寻找ACLs。ProblematicAclManagerBundle是一个很好的包装器,可以简化控制器中的 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()
{
...
}