2012-04-11 3 views
12

Я пытаюсь добавить Symfony 2.0 ACL в мое безплатное приложение PHP. Из-за отсутствия документации о том, как использовать компонент безопасности как автономный, я полностью запутался, и я застрял в вопросах: какой класс включить первым? Какой объект к примеру? Можно ли использовать без моделей и контроллеров?Компонент безопасности из Symfony 2.0 как автономный

Любое предложение о том, как начать или любую хорошую ссылку?

Благодаря

+1

Я бы предложил ACL Zend, потому что это от слабосвязанного или «клеящего» фреймворка, а S2 - полный стек. – SuperMykEl

ответ

2

Какой класс включить первым?

Скорее всего, вам потребуется включить хотя бы части, если не все ядро ​​безопасности, а затем какую реализацию ACL вы хотите использовать. Вы можете посмотреть зависимости, перечисленные в начале реализации ACL, и посмотреть, что они распространяют. Например, ACL/DBAL имеет следующую зависимость, называемую в заголовке:

namespace Symfony\Component\Security\Acl\Dbal; 

use Doctrine\DBAL\Driver\Connection; 
use Doctrine\DBAL\Driver\Statement; 
use Symfony\Component\Security\Acl\Model\AclInterface; 
use Symfony\Component\Security\Acl\Domain\Acl; 
use Symfony\Component\Security\Acl\Domain\Entry; 
use Symfony\Component\Security\Acl\Domain\FieldEntry; 
use Symfony\Component\Security\Acl\Domain\ObjectIdentity; 
use Symfony\Component\Security\Acl\Domain\RoleSecurityIdentity; 
use Symfony\Component\Security\Acl\Domain\UserSecurityIdentity; 
use Symfony\Component\Security\Acl\Exception\AclNotFoundException; 
use Symfony\Component\Security\Acl\Exception\NotAllAclsFoundException; 
use Symfony\Component\Security\Acl\Model\AclCacheInterface; 
use Symfony\Component\Security\Acl\Model\AclProviderInterface; 
use Symfony\Component\Security\Acl\Model\ObjectIdentityInterface; 
use Symfony\Component\Security\Acl\Model\PermissionGrantingStrategyInterface; 

Но вы, вероятно, необходимо проверить каждый из тех, которые перечислены в их зависимость, и загрузить их в качестве хорошо.

Я хотел бы отслеживать зависимости и следить за тем, что нужно. Выбросьте эти классы в отдельное место, чтобы у вас было только то, что вам нужно, и используйте некоторые ловушки ошибок, чтобы определить, что у вас есть все.

Какой объект в качестве примера?

Ваш ACL. Если зависимости определены и загружены, то вы должны создать экземпляр объекта класса ACL.

Можно ли использовать без моделей и контроллеров?

Чтобы быть честным, я не уверен, что использование ACL вне S2 возможно без большой работы, но если вы можете получить его экземпляр со всем, что ему нужно, то вы должны иметь возможность использовать объект без модель MVC.

К сожалению, из того, что я понимаю в S2, это полная структура стека, и это должно быть все или ничего. но если бы я собирался попытаться заставить его работать, это было бы так, как я это делал.

12

SecurityServiceProvider для Silex может быть хорошим местом для запуска, поскольку он объединяет все необходимые сервисы компонентов в одном файле. Хотя большой, вам, вероятно, будет намного легче переварить, чем SecurityBundle от Symfony2.

В интересах поддержания вашего здравомыслия вам следует рассмотреть возможность использования контейнера обслуживания для организации всех этих объектов. В вышеупомянутом классе провайдеров класс Silex Application представляет собой экземпляр Pimple, поэтому вы можете с легкостью перенести его автономный Pimple. Я видел это, потому что интеграция контейнера обслуживания Pimple в ваше приложение должна быть менее инвазивной, чем использование платформы Silex.

После того, как у вас есть основные классы компонентов безопасности, вы должны иметь возможность следовать вместе с ACL documentation и добавлять дополнительные сервисы в свой контейнер по мере необходимости. В этот момент секции ACL-специфичности SecurityBundle могут оказаться полезными, так как вы можете сосредоточиться на соответствующих битах. Имейте в виду, что в документации имеется несколько cookbook entries для ACL.

+0

Плюс 1 за все, кроме сервисного [контейнера] локатора анти-шаблона. – Jimbo

0

Если и хотите, чтобы понять, как использовать использовать компонент Symfony2 и как интегрировать, что в рамках вашего проекта, то прочитайте Fabien Potencier blog 'create your own framework' пост, который, безусловно, поможет U, чтобы понять суть структуры от и как загрузился Symfony2 компонент в проекте

есть также хороший документ для ACL на сайте symfony

+3

Серия Fabien охватывает несколько компонентов в автономной форме, но компонент Security заметно отсутствует. – jmikola

Смежные вопросы