我有一个在 Tomcat 7 上运行的 Web 应用程序,并且通过直接使用 https 和适当的端口,我已经成功地获得了 SSL 和基于表单的身份验证。但是,我希望登录页面需要 SSL,如果我导航到我的 Web 应用程序的根目录,它似乎无法正常工作。例如,如果我转到http://localhost:8080/ProjectManagementSystem/login.html
它会重定向到 SSL,但如果我转到http://localhost:8080/ProjectManagementSystem
则不会,后者会重定向到登录页面,但不会更改为 SSL。
如果不将登录页面移动到它自己的目录(如在这个问题中),这是否可能?
web.xml 中的相关部分是:
<security-constraint>
<web-resource-collection>
<web-resource-name>PMS</web-resource-name>
<url-pattern>/login.html</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>ProjectManagementSystem</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
我尝试了许多不同的配置(例如添加额外的 url 模式,如 /),但是当我转到 web 应用程序的根目录时,无法重定向任何内容。我真的很感激知道这是不可能的,或者我只是做错了什么。谢谢。
ETA:我实际上继续尝试将 login.html 移动到 login/login.html 并将其更改为<url-pattern>/login/*</url-pattern>
,但它仍然无法正常工作。所以我想我一定做错了什么,但我一辈子都想不通是什么。
ETA2:我也尝试过,<url-pattern>/*</url-pattern>
但这些都没有奏效......<url-pattern>*</url-pattern>
<url-pattern>*.html</url-pattern>
ETA3:我也尝试更改 web-resource-name,以防它与 web.xml 的另一部分冲突,但这仍然不起作用。我快没主意了。