2014-10-30 5 views
0

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

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

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

+0

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

+0

Помогите нам понять, как работает приложение на нескольких компьютерах, не имея необходимости использовать сеансы 5o. Сеанс var будет уникальным для каждого пользователя. В чем проблема? –

+0

Мы храним зашифрованный идентификатор пользователя в cookie браузера пользователя, поэтому нам не нужно использовать сеанс на стороне сервера. – Ryan

ответ

1

Короткий ответ: нет.

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

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

+0

Поскольку в нашем приложении мы храним зашифрованный идентификатор пользователя в cookie-браузере пользователя, поэтому нам не нужно использовать сеанс на стороне сервера. При интеграции с использованием HybridAuth мы обнаружили, что они использовали $ _SESSION несколько способов, которые нарушили наш дизайн. – Ryan

0

Если вы не используете механизм сеанса 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-адрес (в объявлении Round-Robin DNS или в стандартных балансирах нагрузки), поэтому уникальное хранилище на каждом сервере , не видимый другими серверами, должен работать.