Нужно ли использовать Symfony2 ACL для проверки владения в SaaS? - PullRequest
2 голосов
/ 21 марта 2012

В многопользовательском веб-приложении следует использовать платформу Symfony2 ACL для проверки владения объектами домена?

Я не могу получить точку, поскольку (при условии, что каждая таблица имеет обратную ссылку на объект User), я могу просто проверить текущего пользователя id по отношению к владельцу объекта id, как показано ниже:

/*
 * @Route("/edit/{slug}")
 * @Method("GET|POST")
 * @Secure(roles="ROLE_USER")
 * @Template
 */
public function editAction($slug);
{
    // Find the post given the slug
    $repo    = $this->getDoctrine()->getRepository('AcmeHelloBundle:Post');
    $entity  = $repo->findOneBySlug($slug);
    $current = $this->get('security.contex')->getToken()->getUser();

    // 404 if slug is invalid
    if(!$entity) throw new $this->createNotFoundException();

    // AccessDenied if current user is not the owner of the entity
    if($current->getId() != $entity->getUser()->getId())
        throw new AccessDeniedException();
}

Может быть, ACL может помочь избежать обратной ссылки каждой сущности на пользовательскую таблицу? Любое объяснение или пример будут полезны, спасибо.

1 Ответ

2 голосов
/ 21 марта 2012

ACL полезен, когда у вас есть сценарий, когда несколько человек имеют доступ к одному домену. В документации ACL есть хороший пример для этого.

Например, допустим, у вас есть SaaS, обеспечивающий совместное редактирование документов для компаний.Компания может захотеть ограничить доступ к документу, чтобы редактировать его могли только руководители компании, а не сотрудники.В этом случае вы не можете использовать только токен пользователя, так как нескольким участникам необходим доступ к домену.Вот тут-то и появляется полезность ACL.

...