совместное использование сеанса между различными платформами приложений - PullRequest
4 голосов
/ 27 мая 2011

У меня был сценарий, и я хочу, чтобы вы, люди, высказали свое мнение.

У меня есть различные веб-приложения, разработанные на Django, Rails, PHP, и я хочу, чтобы все они совместно использовали одни и те же данные сеанса каждый раз.Означает, что если пользователь вошел в приложение PHP, он может автоматически войти в приложение Rails и наоборот.

Я знаю, что это какой-то Центральный сервер аутентификации .Вот некоторые из них: cas , josso .

Что вы, люди, думаете по этому поводу.Мне нужно поведение, подобное Google Apps, когда я захожу в Gmail, я также могу автоматически зайти в GoogleDocs.

Пожалуйста, поделитесь своими мыслями, как реализовать этот сценарий?

Ответы [ 4 ]

2 голосов
/ 27 мая 2011

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

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

Вы можете запустить собственную конечную точку OAuth или OpenID, в которой ваши пользователи регистрируются, а затем выполнять аутентификацию через эту конечную точку в любом из ваших приложений.

0 голосов
/ 27 мая 2011

просто храните сессии в БД или обрабатывайте их самостоятельно

лучший подход - создать специальную таблицу для этого следите за тем, чтобы php захотел сохранить эти данные в сиализованном виде, поэтому перед сохранением в соответствующем поле не десериализуйте, поскольку сериализованные данные слишком сложны для обработки

в php у вас есть $ _SESSION и session_set_save_handler () но я думаю, тебе лучше сделать это самостоятельно

убедитесь, что все сайты используют один домен cookie (ajax onload (чтобы попытаться получить этот хаки) или сохраняют один и тот же домен)

0 голосов
/ 27 мая 2011

В PHP вы можете использовать session_set_save_handler, чтобы указать, как сеанс будет постоянным и восстановленным.Я думаю, Django и Ruby On Rails предоставляют аналогичные средства

0 голосов
/ 27 мая 2011

В своих приложениях я использую SESSION для хранения значения вошедшего в систему пользователя. Например $_SESSION['site1']['bakcend']['loggedin']=1; Чем поставить проверку сеанса в других местах. Все они, конечно, находятся под одним и тем же domain.tld Если вы используете приведенный выше пример $_SESSION['site1']['bakcend']['loggedin']=1;, вам понадобится много проверок, если у вас много разделов. Но это только мнение, есть место для гораздо большей гибкости.

Вы также можете использовать куки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...