我无法连接到自动生成的 Spring Security 登录页面。根据文档,在您的 security-context.xml 中包含以下行将使 Spring 生成一个 html 登录表单,并在尝试连接到特定 URL 时将用户重定向到该表单:
<http auto-config="true" >
<intercept-url pattern="/management-console" access="ROLE_ADMIN"/>
</http>
<authentication-manager ... />
这是我的其余配置。Web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/context/applicationContext.xml <!-- I am importing my security-context.xml in here -->
<param-value>
</context-param>
<!-- Security Configuration -->
<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>/management-console</url-pattern>
</filter-mapping>
我已经尝试直接在 web.xml 中导入 security-context.xml,但我仍然看到错误。
部署我的应用程序后,我可以毫无问题地连接到我指定的每个 URL。但是,当我尝试访问 localhost:{port}/{appName}/management-console 时,过滤器链将我重定向到 /spring_security_login(如预期的那样)。但是,我在转发后看到“HTTP 状态 405 - 不支持请求方法 'GET'”错误,并且控制台上出现以下内容(spring-mvc 是我给我的 servlet 的名称):
org.springframework.web.servlet.PageNotFound | No mapping found for HTTP request with URI [/InternalManagementViewer/spring_security_login] in DispatcherServlet with name 'spring-mvc' |
当我错过在控制器中声明 POST/GET 映射之前,我已经看到了这个错误。根据文档,我不应该在我的控制器中包含这样的方法来处理 /spring_security_login 映射。根据我的阅读,spring 应该知道返回自动生成的登录 html 页面。
为了看看会发生什么,我在控制器中声明了一个方法来处理 /spring_security_login 映射。由于该函数返回void(因为我不知道生成的html登录页面的本地视图名称),它会查找名为“spring_security_login.jsp”的资源,该资源未在我的项目中显式创建,因此我得到“未找到 HTTP 资源”错误。
我被这个难住了,真的可以用手。非常感谢您看一看。