совместное использование сеанса между php и jsp

#php #jsp #session

#php #jsp #сеанс

Вопрос:

У нас есть несколько веб-страниц, написанных на JSP, и несколько других, написанных на PHP.

Чего мы пытаемся достичь, так это того, что всякий раз, когда пользователь входит в систему (через страницу PHP), мы хотим сохранить информацию о сеансе (идентификатор пользователя, время входа и т. Д.) И использовать ту же информацию при доступе к страницам JSP.

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

Есть ли способ сделать это, или они автоматически совместимы друг с другом?

Комментарии:

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

2. Спасибо Scuzzy. Есть ли лучший способ сделать это? В этом случае мы должны удалить информацию о сеансе из базы данных при выходе из системы. Но что произойдет, если пользователь закроет браузер или отключит свою систему без выхода из системы? Мы остались с несколькими бесполезными записями в БД.

3. Хорошо, проблема с закрытием браузера пользователем может быть решена с помощью самого файла cookie, пустой или 0-истечение срока действия файла cookie (и, следовательно, идентификатора сеанса) при закрытии браузера. Оттуда вы можете создать свою собственную функцию сборки мусора для очистки таблицы сеансов, которые были неактивны в течение определенного периода. Самый простой способ справиться с этим — прямо перед проверкой данных для входа очистить старые строки на основе последней использованной метки времени, в идеале вы можете просто делать это перед каждым обновлением сеанса, чтобы гарантировать, что пользователи, которые слишком долго не подключались, автоматически выходят из системы.

Ответ №1:

У вас должно быть общее распределенное управление сеансами, которое страницы PHP и JSP будут использовать для извлечения сеансов. Вам также необходимо иметь обертки запросов для JSP и PHP, которые переопределяют getSession() и делегируют управление сеансами вашему пользовательскому распределенному управлению сеансами.

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

Общее распределенное управление сеансами должно заботиться о жизненном цикле управления сеансами, таком как:

  1. Создание сеансов, если сеанс не существует с заданным идентификатором.
  2. Сеанс поиска, если сеанс существует с заданным идентификатором.
  3. Аннулировать сеанс, когда пользователь выходит из системы, т.Е. Когда Страница делает сеанс недействительным.
  4. Аннулировать сеанс, если сеанс простаивает в течение заданного времени ожидания. Поток управления сеансом должен проверять сеансы с заданным интервалом и аннулировать сеанс, который превысил значение тайм-аута.