Подтвердить что ты не робот

Компонент безопасности от Symfony 2.0 как автономный

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

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

Спасибо

4b9b3361

Ответ 1

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

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

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

Ответ 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, это полная структура стека, и это должно быть все или ничего. но если бы я попытался заставить его работать, это было бы так, как я бы это сделал.

Ответ 3

Если вы хотите понять, как использовать компонент symfony2 и как интегрировать его в свой проект, тогда прочитайте Блог Fabien Potencier "создайте свою собственную инфраструктуру" сообщение, которое, безусловно, поможет вам понять суть структуры и как загружать компонент symfony2 в ваш проект

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