【问题标题】:j_spring_security_check returning 404 on Tomcat but works on Jettyj_spring_security_check 在 Tomcat 上返回 404 但适用于 Jetty
【发布时间】:2016-12-15 07:34:27
【问题描述】:

我有一个基本的 Spring 安全设置,带有基于表单的登录。将我的登录操作提交给 j_spring_security_check 时,它可以在 Jetty 上运行,但在 Tomcat(7 和 8)上出现 404 代码失败。我正在使用 Spring 3.2。

所以提交到 server:port/app/j_spring_security_check 会返回 404 响应。

我的安全 http 设置如下所示:

<security:http >
        <security:form-login login-page="/login.jsp"
                             username-parameter="j_username"
                             password-parameter="j_password" />
        <security:intercept-url pattern="/admin/**" access="ROLE_ADMIN"/>
        <security:custom-filter position="PRE_AUTH_FILTER" ref="springAccessManagerAuthenticationFilter"/>
        <security:intercept-url pattern="/j_spring_security_check" access="IS_AUTHENTICATED_ANONYMOUSLY"/>        
        <security:session-management></security:session-management>
        <security:headers>
            <security:cache-control/>
            <security:xss-protection/>
            <security:hsts/>
            <security:frame-options/>
            <security:content-type-options/>
        </security:headers>
    </security:http>

登录页面如下所示:

<%@ include file="/WEB-INF/jsp/tags.jsp"%>
<%@page session="false" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Login</title>
    </head>

    <body id="login">       
        <form method="POST" action="<c:url value='j_spring_security_check' />"
              id="loginForm" autocomplete="off">
            Username : <input id="username" type="text" size="15" maxlength="60" name="j_username"><br><br>
            Password : <input id="password" type="password" size="15" maxlength="60" name="j_password"><br><br>
            <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
            <input value="Login" type="submit" id="submit" name="_eventId_nextpage">
        </form>
    </body>
</html>

我的 web.xml 有 SpringSecurityFilterChain

<!-- Spring Security -->
    <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>

【问题讨论】:

  • 为什么投反对票?

标签: spring spring-mvc spring-security


【解决方案1】:

我终于发现这是默认过滤器的 web.xml 中的错字。

我有:

 <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/logout</url-pattern>
        <url-pattern>/j_security_check</url-pattern>
    </servlet-mapping>

j_security_check 应该是j_spring_security_check

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    相关资源
    最近更新 更多