У меня есть простое java приложение, которое выполняет вход в систему. Здесь основной c контроллер:
public class LoginController extends MyAccountFormController{
// Override formBackingObject, handleRequestInternal ...
@Override
protected ModelAndView onSubmit(final HttpServletRequest request,
final HttpServletResponse response, final Object command, final BindException errors)
throws Exception
{
// Login operation against DB ...
return new ModelAndView(new RedirectView(ViewConstants.MY_ACCOUNT_VIEW_REDIRECT,
true, true, false));
}
}
Здесь MyAccountFormController:
import org.springframework.web.servlet.mvc.SimpleFormController;
public class MyAccountFormController extends SimpleFormController{
// Bunch of services magically autowired for the login Controller
}
Здесь некоторые из xml конфигурации:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
<property name="order" value="2"/>
</bean>
<bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="0"/>
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/login.html" value-ref="loginController" />
</map>
</property>
</bean>
Приложение достижимая впадина AWS
Балансировщик нагрузки в экземпляр EC2. Сертификат SSL принадлежит балансировщику нагрузки, поэтому, когда запрос https попадает на балансировщик нагрузки, он пересылает экземпляр EC2, прослушивающий порт 8080.
Экземпляр EC2 запускает Tomcat 7 (не встроенный tomcat).
Проблема заключается в том, что когда он попадает на страницу входа и успешно выполняет вход, он попадает в запрос http для ViewConstants.MY_ACCOUNT_VIEW_REDIRECT
.
Как сохранить протокол в https. Это необходимо для того, чтобы реферер не был нулевым при переходе от представления к другому, например к странице «Вход в учетную запись».
Я уже пытался применить следующую конфигурацию tomcat, но ничего не изменилось:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"
/>
Я также попытался установить http10Compatible
, добавив следующее свойство к InternalViewResolver
следующим образом:
<property name="redirectHttp10Compatible" value="false" />