我正在使用Tomcat提供的表单身份验证,它工作正常。无论使用什么URL,都应该调用Dispatcher Servlet,这样我就可以根据使用的URL使用默认页面或任何特定页面的转发。
例:
https://localhost:8443/myApp/List/->重定向到list.jsp或/ home / list
https://localhost:8443/myApp->重定向到home.jsp或/ home
https://localhost:8443/myApp/adgsdg->重定向到home.jsp或/ home
我的web.xml看起来像:
<!-- WELCOME FILE LIST -->
<welcome-file-list>
<welcome-file>/Home/Servlet</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>servlet.DispatcherServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/Home/Servlet</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>Wildcard means whole app requires authentication
</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>tomcat</role-name>
</auth-constraint>
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL, INTEGRAL, or NONE -->
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/login-failed.html</form-error-page>
</form-login-config>
</login-config>
welcome-file-list似乎没有任何作用。我希望这可能是在成功登录表单后重定向的默认位置,但是Tomcat保存请求的URL并重定向到该URL。
当我在servlet映射中使用/ *时,身份验证不起作用。
成功登录表单后如何实现重定向?
最佳答案
<welcome-file-list>
是您打开webapp
时应打开的页面,可能是Login
页面。您可以做的是在此页面提交的内容中称为Servlet
。在此LoginServlet
中,您可以使用if/else
,如果条件成功并且if
运行,则将其dispatch
转到主页,如果条件失败并且else
运行,则可以将dispatch
移至相同的Login
页。希望能解释您的疑问。
您可以随时扩展此想法以适合您的需求。
希望能画一幅画。
关于forms - 成功登录Tomcat表单后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49463098/