2015-08-26 3 views
0

Я пытался реализовать Zend\Authentication в соответствии с инструкциями на http://framework.zend.com/manual/current/en/modules/zend.authentication.intro.html, но мне, кажется, не хватает части головоломки.Как реализовать собственный класс хранения аутентификации в ZF2?

Я создал пользовательский адаптер и работает нормально, но я не понимаю, как реализовать пользовательское хранилище.

Я создал пользовательский класс, который реализует StorageInterface, но я не могу оборачивать голову тем, что я должен делать с помощью методов.

Метод записи является единственным, который вводится, что представляется вторым параметром Authentication\Result.

Что я не понимаю, какие данные я должен написать в своем хранилище (Redis) - будет ли достаточно содержимое $contents? Должен ли я иметь какой-то ключ или что-то доступное в пользовательском классе хранения, который я могу использовать для запроса моего хранилища?

ответ

1

Даже если вы пишете свой собственный адаптер аутентификации, необязательно создавать собственное хранилище сеансов. Если вам нужно изменить Storage для добавления функциональности, вы все равно можете просто расширить один из классов хранения данных. Например, это класс, где я это сделал. https://github.com/soliantconsulting/SimpleFM/blob/master/library/Soliant/SimpleFM/ZF2/Authentication/Storage/Session.php

Даже если вам понадобится пользовательская обработка сеансов в конечном итоге, я предлагаю вам начать с использования существующего класса хранения сеансов Zend для работы вашего адаптера Auth. Затем вы можете вернуться и сосредоточиться на Хранилище на втором проходе.

Мне было очень интересно узнать, как работают классы Zend под капотом. Кроме того, посмотрите на модульные тесты. Наконец, если это помогает, посмотрите и мои классы проверки подлинности SimpleFM, потому что это хороший простой вариант использования. Существует также простой пример реализации пользовательского адаптера через заводы здесь https://github.com/soliantconsulting/SimpleFM-skeleton/tree/master/module/SimpleFMAuth/src/SimpleFMAuth/Factory

0

Я отвечаю на свой вопрос, с чем я столкнулся, на случай, если он может помочь кому-то в будущем.

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

Мое решение состояло в том, чтобы просто сохранить все мои данные сеанса в Redis с помощью хэшированного ключа, а также сохранить значение хэшированного ключа в файле cookie для легкого извлечения.

+0

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

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

  • Нет связанных вопросов^_^