在多租户Web应用程序中,是否应使用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可以帮助避免将每个实体引用回用户表?任何解释或示例都会有所帮助,谢谢。
答案 0 :(得分:2)
如果您有多个人可以访问同一个域的方案,则ACL非常有用。 The ACL documentation就是一个很好的例子。
例如,假设您有SaaS为公司提供协作文档编辑。公司可能希望限制对文档的访问,只允许公司的高管编辑它而不是员工。在这种情况下,您不能单独使用用户令牌,因为多个成员需要访问域。这就是ACL的用处所在。