Struts2: проблема сеанса (после обратного прокси) - PullRequest
2 голосов
/ 02 августа 2010

Я сохраняю параметры сеанса в карте сеансов Struts2, которую я получаю в своих действиях с помощью интерфейса SessionAware. Мое приложение находится в пути / MyApp.

После настройки приложения struts2 на сервере Apache с обратным перенаправлением прокси, которое заставляет URL http://www.appdomain.com/ указывать на мой локальный кот на localhost: 8080 / MyApp , Struts2 обработка сессий больше не работает. Я ожидаю, что файлы cookie сеанса сохраняются для контекста Struts2 http://localhost:8080/MyApp вместо http://www.appdomain.com/ ...

Есть ли решение в конфигурации Struts2? Или как-то программно изменить cookie сессии? Не удалось найти никакой информации об этом на веб-сайтах или в официальной документации. Пожалуйста, помогите, я уже в работе и мои логины не работают; -)

Ответы [ 3 ]

2 голосов
/ 02 июля 2015

Это старый, но я нашел его и хотел бы отбросить мои 5 центов.

Одно исправление, которое вы можете использовать, - это отредактировать файл web.xml и в конфигурации сеанса установить что-то вроде:

<session-config>
    <session-timeout>10</session-timeout>
    <cookie-config>
        <name>MYAPPSESSIONID</name>
        <path>/</path>
    </cookie-config>
</session-config>

Это меняет

  • Сеансовый куки-файл с JSESSIONID на MYAPPSESSIONID, поэтому он не будет конфликтовать с другими приложениями, которые могут быть доступны на том же прокси
  • Путь, которыйпеченье применяется.Так что он всегда будет отправлен на сервер

Надеюсь, что это может помочь другим.

1 голос
/ 03 августа 2010

Я только что решил проблему с помощью грязного хака: я передал Session Id в JSP и с помощью javascript установил необходимый файл cookie JSESSIONID на стороне клиента.

функция createCookie (имя, значение, дни) { if (days) { переменная дата = новая дата (); date.setTime (Date.getTime () + (дней * 24 * 60 * 60 * 1000)); var expires = "; expires =" + date.toGMTString (); } иначе var expires = ""; document.cookie = name + "=" + value + expires + "; path = /"; }

$ (документ) .ready (function () { createCookie ( "JSESSIONID", "", 3); });

Получил код JS с этой страницы: http://www.quirksmode.org/js/cookies.html

Спасибо, проблема решена!

С наилучшими пожеланиями, Тим

0 голосов
/ 22 сентября 2012

Поместите это в ваш httpd.conf

#all cookies from /MyApp are proxied to "/"
ProxyPassReverseCookiePath /MyApp /

http://httpd.apache.org/docs/current/mod/mod_proxy.html#proxypassreversecookiepath

...