我有一个使用 Spring Security 的 Web 项目。用户从 login.jsp 开始,通过认证,直接进入 hello.jsp。请注意,所有 JSP 页面都位于 WEB-INF 中。在此过程中,我注意到 URL 以 开头localhost:8081/Project1/pages/login.jsp
,在提交页面后,URL 已更改为 http://localhost:8081/Project1/pages/j_spring_security_check;jsessionid=792884C463EAC3C6CBC155EA75F4C6E4
。
然后页面在身份验证后显示 HTTP 状态 404,而不是显示 hello.jsp。在控制台输出中,我看到以下消息:
WARNING: No mapping found for HTTP request with URI [/SpringSecurity3/pages/j_spring_security_check] in DispatcherServlet with name 'SpringSecurity3'
我不确定 Spring 配置中的未配置是什么?配置代码如下:
<http auto-config="true">
<intercept-url pattern="/welcome*" access="ROLE_ADMIN"/>
<intercept-url pattern="/pages/hello.jsp" access="ROLE_ADMIN"/>
<form-login login-page="/login" default-target-url="/welcome" authentication-failure-url="/loginfailed" />
<logout logout-success-url="/pages/login.jsp"/>
</http>
我的 web.xml 如下:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>
org.springframework.web.filter.DelegatingFilterProxy
</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/WEB-INF/pages/*</url-pattern>
</filter-mapping>