我正在尝试通过tomcat上的登录实现登录。登录servlet称为iniciarsion,所以我将以下内容添加到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时,请求参数正在丢失。
如何解决此问题?
听起来好像您的登录页面(其中定义了"登录")不受保护。当它通过HTTP击中您/iniciarsesion Servlet时,Tomcat将HTTP重定向到SSL站点。真正的重定向不会保留最初发送到服务器的数据,因此您会丢失数据。我的建议是将您的登录页面包含在机密范围中。
SSL的整个点是确保运输的。如果首先通过HTTP发送登录凭据,那么将其重定向到HTTP是没有意义的,因为您已经在"清除"中发送了信息。您要做的是通过明确设置表单URL或通过HTTPS加载登录页来将登录格式发布到HTTPS URL。这将涉及将登录页添加为受保护的资源,就像您的登录servlet一样。