2010-08-02 6 views
1

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

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

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

+0

Вы пробовали переписывать URL-адреса, чтобы получить идентификатор сеанса в URL-адрес? – Pat

+0

Не совсем, но на самом деле это не то, что я хочу сделать (довольно хорошие URL-адреса). Между тем, я узнал, что cookie сеанса, установленный Struts2, действителен только для http://www.appdomain.com/MyApp ... Мне нужен способ изменения поведения struts2 для установки этого пространства имен. – Akku

+0

Хорошо, я уже пытался установить cookie JSESSIONID для пользователя sessionId, но выяснил, что сервлет не позволит мне это сделать. Теперь я пытаюсь установить его с помощью JavaScript, но, похоже, мне не кажется, что это работает: -/ – Akku

ответ

1

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

функция createCookie (имя, стоимость, дни) { если (дни) { var date = new Date(); дата.setTime (дата.getTime() + (дни * 24 * 60 * 60 * 1000)); var expires = "; expires =" + date.toGMTString(); } else var expires = ""; document.cookie = name + "=" + значение + expires + "; path = /"; }

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

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

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

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

+0

Я принял свой ответ, поскольку никакие другие ответы, похоже, не вошли. В любом случае, я был бы рад услышать лучшее решение по-прежнему. – Akku

1

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

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

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

Это меняет

  • The SESSIONID печенье из JSessionID в MYAPPSESSIONID так он не столкнется с другими приложениями, которые могут быть выставлены на том же прокси
  • Путь, к которому применяется файл cookie. Поэтому он всегда будет отправлен на сервер

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

Смежные вопросы