Выполнить код перед BjyAuthorize

Я создал систему входа в систему, основанную на cookie, и использую ZF2 с ZfcUser и BjyAuthorize.
Что ж, после входа в систему, если срок действия кэша истекает, BjyAuthorize вызывает мою систему «Запомнить меня», и пользователь не распознается как вошедший в систему.

Вот где я вызываю систему cookie «Запомнить меня» в моем AbstractController: https://gist.github.com/Gamempire/2b6b6388cedca9491d5f#file-abstractcontroller-php-L18 (каждый контроллер расширяет мой AbstractController)

Как я могу позвонить до BjyAuthorize, чтобы BjyAuthorize знал, что кто-то вошел в систему?

Спасибо

0

Решение

Чтобы сделать это правильно, я бы не стал пытаться делать инъекцию до того, как bjyAuthorize
было бы лучше добавить к функциональности ZfcUser и использовать storageChain для получения личности пользователя.

чтобы сделать это, переопределив имя службы ZfcUser

'service_manager' => array(
'factories' => array(
'zfcuser_auth_service' => 'myNamespace\Factory\AuthenticationServiceFactory',
),
),

После этого вам нужно создать свою собственную фабрику, вы можете скопировать ZfcUser и изменить его.

public function createService(ServiceLocatorInterface $serviceLocator)
{
$storageChain = new \Zend\Authentication\Storage\Chain();

// dummy storage interface
$nonPersistent = new \Zend\Authentication\Storage\NonPersistent(); // replace this with your own storage interface.
$nonPersistent->write(1); // just to test

/* @var $authStorage Storage\StorageInterface */
$authStorage = $serviceLocator->get('ZfcUser\Authentication\Storage\Db');

$storageChain->add($authStorage, 10); // Check this interface first.
$storageChain->add($nonPersistent, 0); // Check this interface Second.

/* @var $authAdapter Adapter\AdapterInterface */
$authAdapter = $serviceLocator->get('ZfcUser\Authentication\Adapter\AdapterChain');

return new AuthenticationService(
$storageChain,
$authAdapter
);
}

С этим примером кода делает $this->zfcUserAuthentication()->getIdentity() вернет 1, если нет сеанса, вошедшего в систему пользователя.

После этого вам нужно будет создать собственный интерфейс хранилища. который реализует Zend \ Authentication \ Storage \ StorageInterface. Я не знаю, какова ваша реализация файлов cookie, и вам необходимо адаптировать ее к этому. Также вам нужно будет решить, когда использовать куки, а когда нет. Существует также модуль, созданный для zfcuser, который реализует функцию запомнить меня с именем GoalioRememberMe. Я надеюсь, это поможет вам.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]