PHP HybridAuth библиотека без использования PHP сессии

PHP HybridAuth требует использования сеанса PHP, однако мы хотим избежать использования сеанса на стороне сервера, так как мы запускаем приложение на нескольких компьютерах.

Мы не возражаем, если пользователю необходимо каждый раз, когда это необходимо, проходить аутентификацию у провайдера, поэтому можно ли избежать необходимости использовать сеанс PHP при использовании HybridAuth?

[1] http://hybridauth.sourceforge.net/userguide/HybridAuth_Sessions.html

0

Решение

Краткий ответ — нет.

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

Но это основано на предпосылке, что вы не можете иметь сессии на нескольких машинах. Это тривиально. Даже запуск сеансов в нескольких центрах обработки данных является более простым решением. И поскольку вы, похоже, не используете сеанс для чего-либо, кроме аутентификации, вы не столкнетесь с проблемами масштабируемости.

1

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

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

Например:
http://php.net/manual/en/function.session-set-save-handler.php

Затем вы можете установить сеанс в Memcached (для этого конкретного случая вам следует использовать только php.ini со следующими инструкциями: http://php.net/manual/fr/memcached.sessions.php), или MySQL, или физическое хранилище, доступное для всех серверов (например, NFS).

Хотя я думаю, что даже если у вас несколько серверов, по умолчанию перенаправляется пользователь на один и тот же IP-адрес (в декларации DNS Round-Robin или в стандартных балансировщиках нагрузки), поэтому уникальное хранилище на каждом сервере не видно другие серверы должны работать.

0

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