Кросс-языковые и серверные http-сессии - PullRequest
2 голосов
/ 01 марта 2011

У меня есть одна проблема получения переменных сеанса http. У меня есть два сервера, один причал и один апач. И два языка PHP в Apache и Java в причале. Когда пользователь входит на сайт, его идентификатор профиля сохраняется как переменная Session на сервере Apache в PHP. Могу ли я каким-то образом получить эту переменную сеанса с сервера Jetty, используя Java?

Ответы [ 2 ]

2 голосов
/ 01 марта 2011

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

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

Создание двух файлов cookie после аутентификации

  1. One contains ID and 
  2. other contains signature of ID like using function in php called hmac_hash

hmac_hash

Всякий раз, когда вы получаете запрос, требующий аутентификации.

  1. Using ID and same secret generate same signature back.
  2. Check if the signature you generated is same as one you got in cookie.

Предупреждение : небольшая ошибка может сделать данные общедоступными.
Предупреждение 2 : Большой файл cookie замедлит работу сайта.

0 голосов
/ 01 марта 2011

если бы это был я, я бы хотел переопределить обработчики сеансов в php и сохранить их в базе данных. см http://us2.php.net/manual/en/function.session-set-save-handler.php

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

...