Как и многие веб-сайты, у меня есть всплывающее окно входа на каждой веб-странице моего сайта.Большинство из этих страниц являются http (небезопасными).Но механизм входа в систему должен отправлять на безопасный URL-адрес.Все это прекрасно работает.Проблема заключается в безопасных изменениях URL-адресов в различных средах разработки, промежуточных и производственных средах.
Так что не так уж и сложно, у меня просто есть файл свойств для каждой среды с защищенным хостом и портом.Теперь есть способ кодировать URL с правильным контекстом и идентификатором jsession (если необходимо) и другими вещами, которые обычно делает c: url?
, например:
<form method="post" action="${rootHttpsUrl}/login">
Я мог бы подуматьэто будет работать, чтобы изменить URL, чтобы добавить правильный контекст, информацию о сеансе, если это необходимо, и т. д .:
<form method="post" action="<c:url value='${rootHttpsUrl}/login'/>">
Но это не работает, потому что c: url видит https://some -url.com и считает, что это внешняя ссылка.Так что я мог бы просто изменить URL-адрес самостоятельно:
<form method="post"
action="<%=response.encodeURL(${rootHttpsUrl}${pageContext.request.contextPath}/login)%>">
Но переход к java-коду, подобному этому, не позволяет java видеть переменную jH rootHttpsUrl (как я могу представить это java?).Есть ли способ вызвать encodeURL из JSP?
Так что же является лучшим решением здесь?Я использую Spring, Spring webmvc и Spring Security v3.0.В идеале есть что-то вроде
<c:url value='/login' secure='true'/>
ОБНОВЛЕНИЕ : лучшее, что я придумал, - это иметь файл свойств для каждой среды со свойством для хоста и порта https.Затем я добавляю это к модели и ссылаюсь на любой безопасный URL-адрес, например:
https://${httpsHostAndPort}<c:url value='/login'/>