Базовая библиотека проверки подлинности и управления сессиями для PHP?

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

В основе многих моих веб-приложений лежит самозанятый пользовательский / сеансовый класс управления, который по своему происхождению относится к 2002 году. Я решил, что настало время для фундаментальной перезаписи или, предпочтительно, для создания готовой -стандартная библиотека.

Мои требования к этой библиотеке:

  • Объектно-ориентированный, чистый, отличный код
  • Полное управление сеансом: Wrapper to session_start () и супруги
  • В идеале обеспечит различные методы хранения (PHP Standard / tmp, основанный на базе данных)
  • В идеале можно было бы подключаться к различным типам хранения пользовательских данных, но mySQL будет хорошо
  • В идеале обеспечит удобные функции поддержки OpenID, но это причудливая мысль, сейчас нет требований
  • Методы: проверка сеанса, получение пользовательских данных, получение данных сеанса, вход в систему пользователя, выход из системы
  • Настройки: срок службы сеанса, шифрование паролей
  • Должен быть открытым исходным кодом

И если это очень общий, API управления пользователями или общий коннектор для управления пользователями окружающего приложения будет приятным:

  • Создание / обновление / удаление записей пользователей
  • Извлечение и изменение данных текущего пользователя

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

Мои два вопроса:

  • Вы знаете такой компонент, как общая, автономная библиотека?

  • Может ли кто-нибудь с глубокими знаниями в Zend Framework рассказать мне, можно ли использовать Zend_auth и / или Zend_session автономно , в основе большого приложения, которое в противном случае ничего общего с ZF не может сделать, не запуская проблемы?

Может ли кто-нибудь с глубокими знаниями в Zend Framework рассказать мне, можно ли использовать Zend_auth и / или Zend_session автономно, в основе большого приложения, которое в противном случае ничего общего с ZF не может сделать, не запуская проблемы?

У меня нет глубоких знаний о Zend Framework, но я использовал различные компоненты (например, Zend_Search) без создания объекта Zend_Application или с использованием структуры MVC, и я уверен, что остальная часть библиотеки также будет полностью модульной. В прошлый раз, когда я копал код Zend_Session, я не обнаружил, что он включает в себя вне Zend/Session/ . Быстрый Google, похоже, подтвердил это для Zend_Auth, а также часто задаваемые вопросы Zend:

Является ли ZF библиотекой компонентов или каркасом?
Простой ответ: оба. Zend Framework предоставляет все компоненты, необходимые для большинства веб-приложений в одном дистрибутиве. Но компоненты Zend Framework также слабо связаны, что упрощает использование всего лишь нескольких компонентов в веб-приложении – даже рядом с другими платформами! Используя эту архитектуру use-at-will, мы реализуем функции, обычно встречающиеся в более монолитных рамках. Фактически, в настоящее время мы работаем над компонентом инструментария для версии 1.8, который упростит сбор приложений с использованием компонентов ZF, но не пожертвует природой использования существующих компонентов ZF по назначению. Это является свидетельством использования архитектуры Zend Framework, используемой по умолчанию, и сам компонент инструментального средства может использоваться автономно.

Единственное, что я должен был сделать, если не использовать Zend_Search с инфраструктурой MVC, – это добавить каталог, в котором вы установили Zend Framework на путь включения из-за включений в библиотеке Zend. Документация не документирует необходимые вам вложения, если вы не используете Zend Autoloader, но поскольку все использует схему именования классов PEAR, ее легко вывести из имен классов, которые вы используете. (поэтому для класса Foo_Bar_File вам потребуется включить Foo/Bar/File.php )

Могу ли я предложить библиотеку аутентификации, которую я написал? Это общая библиотека (не написанная для части или ее часть): http://ulogin.sourceforge.net

Доступно несколько библиотек OpenID.

http://wiki.openid.net/Libraries#php

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

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

В некоторых моих приложениях пользователи просто регистрируются, чтобы делать что-то. В других случаях пользователи являются частью компании, а их разрешения и доступ к данным ограничены пределами этой компании и уровнем подписки, оплачиваемым компанией. В других приложениях некоторые пользователи являются админами с доступом ко всему, некоторые пользователи являются админами с доступом к некоторым данным (уровень строк), а другие пользователи являются клиентами этих администраторов, имея доступ только к своим собственным данным. Некоторые пользователи привязаны к фирмам / компаниям / клиентам, другие пользователи – нет. Некоторые пользователи – это просто имя пользователя и пароль, другие – большой граф объектов с клиентами, история заказов, настройки отчетов, комментарии и т. Д.

Возможно, я ошибаюсь, и есть какой-то чистый способ абстрагировать все эти требования в систему, которая не требует пяти уровней подкласса и тысячи ударов БД для входа в систему. Однако я ее не нашел.