来自Symfony 2.0的安全组件作为独立组件



我正在尝试将Symfony 2.0 ACL添加到我的无框架PHP应用程序中。由于缺乏有关如何将安全组件用作独立组件的文档,我完全感到困惑,并且遇到了一些问题:首先要包含哪个类?要实例的对象?是否可以在没有模型和控制器的情况下使用?

关于如何开始或任何好链接的任何建议?

谢谢

Silex的SecurityServiceProvider可能是一个很好的起点,因为它将所有基本组件服务集成到一个文件中。虽然很大,但你可能会发现它比Symfony2的SecurityBundle更容易消化。

为了保持理智,应考虑使用服务容器来组织所有这些对象。在前面提到的提供程序类中,Silex 应用程序类是一个 Pimple 实例,因此您应该能够以适度的努力将其移植为独立的 Pimple 实例。我看到了这一点,因为将 Pimple 服务容器集成到您的应用程序中应该比采用 Silex 框架的侵入性更小。

一旦基本安全组件类正常工作,您应该能够遵循 ACL 文档,并根据需要向容器添加其他服务。此时,安全捆绑包中特定于 ACL 的部分可能会有所帮助,因为您可以专注于相关位。请记住,文档中有多个 ACL 说明书条目。

首先要包含哪个类?

您很可能至少需要包含部分(如果不是全部)安全核心,然后是要使用的 ACL 实现。您可以查看 ACL 实现开头列出的依赖项,并查看它们扩展的内容。例如,ACL/DBAL在标头中调用了以下依赖项:

namespace SymfonyComponentSecurityAclDbal;
use DoctrineDBALDriverConnection;
use DoctrineDBALDriverStatement;
use SymfonyComponentSecurityAclModelAclInterface;
use SymfonyComponentSecurityAclDomainAcl;
use SymfonyComponentSecurityAclDomainEntry;
use SymfonyComponentSecurityAclDomainFieldEntry;
use SymfonyComponentSecurityAclDomainObjectIdentity;
use SymfonyComponentSecurityAclDomainRoleSecurityIdentity;
use SymfonyComponentSecurityAclDomainUserSecurityIdentity;
use SymfonyComponentSecurityAclExceptionAclNotFoundException;
use SymfonyComponentSecurityAclExceptionNotAllAclsFoundException;
use SymfonyComponentSecurityAclModelAclCacheInterface;
use SymfonyComponentSecurityAclModelAclProviderInterface;
use SymfonyComponentSecurityAclModelObjectIdentityInterface;
use SymfonyComponentSecurityAclModelPermissionGrantingStrategyInterface;

但是,您可能需要检查列出的每个依赖项,并加载它们。

我会回溯依赖项,并跟踪需要什么。将这些类剔除到一个单独的位置,以便您只拥有所需的内容,并使用一些错误捕获来确定您是否拥有所有内容。

要实例的对象?

您的 ACL。如果所有依赖项都已确定并加载,则应该能够实例化 ACL 类对象。

是否可以在没有模型和控制器的情况下使用?

老实说,我不确定在没有大量工作的情况下在 S2 之外使用 ACL 是可能的,但如果您可以使用它所需的一切来实例化它,那么您应该能够在没有 MVC 模型的情况下使用该对象。

不幸的是,根据我对 S2 的理解,它是一个全栈框架,意味着全有或全无的东西。 但如果我要尝试让它工作,这将是我的方式。

如果你想了解如何使用Symfony2组件以及如何将其集成到你的项目中,请阅读Fabien Potencier博客"创建自己的框架"这篇文章肯定会帮助你理解框架的核心以及如何在你的项目中引导Symfony2组件

在symfony网站上也有很好的ACL文档

最新更新