Требование JSESSIONID должно быть разным до и после входа в систему.JSESSIONID автоматически воссоздается после успешного входа в систему
Течение login.jsp -> loginwebaction -> loginsuccess.jsp -> Фильтр -> otheraction
мой код
- после успешного входа в систему (в loginwebaction)
- копия все атрибуты на карту от сессии
- сессии недействительных,
- воссоздать сеанс
HttpSession session = request.getSession(true);
- скопируйте все атрибуты с карты на новую сессию,
Изменения Jsessionid после успешного входа в систему и входа loginsuccess.jsp. но у меня есть проблемы.
После этого, если я нажму любую другую ссылку для какого-либо другого действия, он попадет в фильтр. В фильтре я должен проверить сеанс для информации о пользователе, если он вошел в систему, иначе должна отображаться страница с ошибкой.
HttpSession session = request.getSession();
if(null == session.getAttribute("USER_INFO")){
//redirect to error page
}
Проблема: сеанс, доступный в фильтре, является новым, не имеет представления о том, как он воссоздан. код в фильтре
Может ли кто-нибудь помочь мне в этом, как продолжить работу по исправлению этой смены сеанса?
Когда отображается loginsuccess.jsp, заголовок ответа HTTP-браузера включает новый или старый JSessionid? Чтобы это увидеть, вам может потребоваться трассировка http-сообщений или использование отладки браузера для просмотра файлов cookie/страниц. Может быть, вам нужно вручную установить новый заголовок JSessionid в ответе? –
Невозможно воспроизвести ошибку, добровольно отправить исходный код и детали конфигурации. –
Вы проверили, есть ли у Клиента более одного сеанса Coockie - да, что может случиться в некоторых случаях. Вы также можете использовать [Фильтр дампа запроса] (http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Request_Dumper_Filter), чтобы просмотреть запрос и ответ, обмен которыми осуществляется между клиентом и сервером. Другим способом может быть использование [HttpSessionListener] (http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpSessionListener.html) для регистрации при создании/уничтожении сеанса – andih