Как я могу настроить Tomcat так, чтобы он всегда перенаправлял на index.jsp после входа в систему?
Вопрос
В настоящее время служба поддержки входа в Tomcat перенаправляет пользователей обратно туда, где они находились изначально, когда приложение обнаружило, что они не вошли в систему.
Для этого конкретного приложения мне нужно заставить их всегда возвращаться к index.jsp
.
Я почти уверен, что это простой вариант настройки в WAR web.xml
, но я не нашел ответа в Google.
Решение
Лучшим решением, вероятно, было бы использовать фильтр сервлетов.Затем вы могли бы проверить наличие j_username / j_password и успешного входа в систему и перенаправить их туда, куда вы хотели, чтобы они отправились.
Другие советы
Это то, что вы не можете настроить в web.xml поскольку это не является частью стандарта.Для Tomcat (протестирован в версии 6.0.14) вы можете принудительно вернуть пользователей к index.jsp, добавив следующий код поверх вашего login.jsp.Он перенаправляет каждый запрос, у которого нет параметра с именем "login" в URL-адресе, на страницу входа /index.jsp?.Поскольку в перенаправлении действительно есть параметр "login", пользователю будет представлена страница входа в систему.
Это небезопасное решение.Если кто-то запросит страницу и добавит параметр входа в систему, он будет перенаправлен.Итак:
/showPerson?id=1234 перенаправит на /index.jsp?login
/showPerson?id=1234?логин НЕ будет перенаправляться на /index.jsp?login
Код, который идет поверх вашего login.jsp:
<%
if (request.getParameter("login") == null) {
response.sendRedirect(request.getContextPath() + "/index.jsp?login");
return;
}
%>
Вместо использования параметра "login" вы, вероятно, могли бы использовать файл cookie.Вы можете сделать это более безопасным, создав случайное значение для параметра login (login=randomvalue) и сохранив это значение в объекте session для сравнения.