현재 스프링 보안에 의해 보안되는 스프링 MVC 애플리케이션을 작성 중입니다. 로그인의 경우 기본 양식 인증이 사용되며 추가 구성을 추가하지 않았으므로 자격 증명은 http://www.localhost:8080/myWebApp/j_spring_security_check
에 게시됩니다.스프링 및 스프링 보안에 대한 서블릿 매핑 변경
지금까지는 좋았지 만 이제 Spring이나 Spring Security의 영향을받지 않는 두 번째 서블릿 (CometD)을 소개했습니다. 이를 위해 servlet-mappings
을 변경하여 스프링 및 스프링 보안을 각각 , /app/*
및 다른 서블릿을 cometd/*
에 대해 매핑하도록 변경했습니다. 이와
<!-- Spring security -->
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
<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>/app/*</url-pattern>
</filter-mapping>
<!-- Spring MVC -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/app</url-pattern>
</servlet-mapping>
<!-- CometD -->
<servlet>
<servlet-name>cometd</servlet-name>
<servlet-class>org.cometd.server.CometdServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cometd</servlet-name>
<url-pattern>/cometd/*</url-pattern>
</servlet-mapping>
문제는이 변경 후 나는 더 이상 로그인 할 수있어 것입니다 다음과 같이 내 web.xml
보인다. 서버가 요청 매핑을 찾을 수 없으며 클라이언트가 NetworkError: 404 Not Found - http://localhost:8080/myWebApp/app/j_spring_security_check
이라고 알려줍니다.
이 매핑에 어떤 문제가 있습니까? 설명서에 설명 된대로 /
및 /*
이 아닌 특정 매핑에 대한 요청 만 처리하도록 Spring과 Spring Security를 어떻게 구성 할 수 있습니까?
미리 감사드립니다.
최저
, 르네는
'springSecurityFilterChain'의 매핑에 오타가 있습니까? '/ app *'(누락 된 슬래시)가 아닌'/ app/*'이어야합니까? – sbordet
@sbordet : 하이 시몬! 오, 네 말이 맞아. 나는 다른 변종을 테스트했다. 불행히도, 나는 아무런 차이가 없습니다. 여전히'j_spring_security_check'을 찾을 수 없습니다. 위의 목록을 편집하여이 문제를 해결했습니다. – rene