我正在尝试在Tomcat上通过SSL实现登录。 登录servlet名为IniciarSesion,因此我将以下内容添加到web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>Seguridad en Acceso</web-resource-name>
<url-pattern>/IniciarSesion</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
现在的问题是,当我尝试通过执行以下操作获取输入密码时:
String nick=(String)req.getParameter("login");
返回null,当从http重定向到https时,请求参数丢失。
我该如何解决这个问题?
答案 0 :(得分:0)
听起来好像您的登录页面(定义“登录”)不受保护。当它通过HTTP命中你的/ iniciarSesion servlet时,tomcat会对SSL站点执行HTTP REDIRECT。真正的重定向不会保留最初发送到服务器的数据,因此会丢失数据。我的建议是在CONFIDENTIAL范围内包含您的登录页面。
答案 1 :(得分:0)
SSL的重点是确保传输安全。如果您首先通过http发送登录凭据,那么重定向到https是没有意义的,因为您已经“明确地”发送了信息。您所做的是将您的登录表单发布到https URL,方法是明确设置表单URL,或者通过https加载登录页面。这将涉及将登录页面添加为受保护资源,就像您的登录servlet一样。