2014-11-11 3 views
3

웹 응용 프로그램에 SpringBoot 및 SpringSecurity를 ​​사용하는 https://spring.io/guides/gs/securing-web/ 튜토리얼을 작성했습니다. 튜토리얼에서 설명한대로 전체 프로젝트는 메인 클래스를 통해 실행되고 자동 구성으로 구성됩니다.Tomcat 서버에서 스프링 보안 자습서가 작동하지 않습니다.

제 목표는 Tomcat 서버에서 실행중인 것과 동일한 것을 사용하는 것입니다 (저는 IntelliJ IDEA를 사용하고 있습니다). 모든 것은 오류없이 실행되지만 어떻게 든 "hello"페이지로 이동하면 로그인 페이지로 리디렉션되지 않습니다. 대신 나에게 Hello null!을 표시합니다. 디버그에서 나는 다음을 볼 수 있습니다 로그 :

10:34:06.102 [http-apr-8080-exec-5] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'dispatcher' processing GET request for [/hello] 
10:34:06.103 [http-apr-8080-exec-5] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Mapping [/hello] to HandlerExecutionChain with handler [or[email protected]225a46d1] and 1 interceptor 
10:34:06.103 [http-apr-8080-exec-5] DEBUG o.s.web.servlet.DispatcherServlet - Last-Modified value for [/hello] is: -1 
10:34:06.103 [http-apr-8080-exec-5] DEBUG o.s.w.s.v.ContentNegotiatingViewResolver - Requested media types are [text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8] based on Accept header types and producible media types [*/*]) 
10:34:06.103 [http-apr-8080-exec-5] DEBUG o.s.w.s.view.BeanNameViewResolver - No matching bean found for view name 'hello' 
10:34:06.103 [http-apr-8080-exec-5] DEBUG o.s.w.s.v.ContentNegotiatingViewResolver - Returning [[email protected]] based on requested media type 'text/html' 
10:34:06.104 [http-apr-8080-exec-5] DEBUG o.s.web.servlet.DispatcherServlet - Rendering view [[email protected]] in DispatcherServlet with name 'dispatcher' 
10:34:06.104 [http-apr-8080-exec-5] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'requestDataValueProcessor' 
10:34:06.104 [http-apr-8080-exec-5] DEBUG org.thymeleaf.TemplateEngine - [THYMELEAF][http-apr-8080-exec-5] STARTING PROCESS OF TEMPLATE "hello" WITH LOCALE de 
10:34:06.104 [http-apr-8080-exec-5] DEBUG org.thymeleaf.TemplateEngine - [THYMELEAF][http-apr-8080-exec-5] Starting process on template "hello" using mode "HTML5" 
10:34:06.104 [http-apr-8080-exec-5] DEBUG org.thymeleaf.TemplateEngine - [THYMELEAF][http-apr-8080-exec-5] Finished process on template "hello" using mode "HTML5" 
10:34:06.104 [http-apr-8080-exec-5] DEBUG org.thymeleaf.TemplateEngine - [THYMELEAF][http-apr-8080-exec-5] FINISHED PROCESS AND OUTPUT OF TEMPLATE "hello" WITH LOCALE de 
10:34:06.104 [http-apr-8080-exec-5] DEBUG org.thymeleaf.TemplateEngine.TIMER - [THYMELEAF][http-apr-8080-exec-5][hello][de][644609][1] TEMPLATE "hello" WITH LOCALE de PROCESSED IN 644609 nanoseconds (approx. 1ms) 
10:34:06.104 [http-apr-8080-exec-5] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request 

나는 순수 자바 기반의 설정이 있고 Spring Docs에 따라 설정하고 싶습니다.

내 appconfig가은 다음과 같습니다 :이 튜토리얼에서와 같이

@EnableAutoConfiguration //do magic 
@Configuration 
@ComponentScan("de.visargue") 
@Import({MvcConfig.class, SecurityConfig.class}) 
public class AppConfig { 

    public static void main(String[] args) throws Throwable { 
     SpringApplication.run(AppConfig.class, args); 
    } 
} 

의 SecurityConfig 보인다. 디버깅을 통해 전쟁이 전개 될 때 이러한 메소드가 실행된다는 것을 알 수 있습니다. 그러나 로그인 페이지로 리디렉션이 더 이상 작동하지 않습니다.

로그 아웃을 클릭하면 처리기를 찾을 수 없다는 메시지가 출력됩니다.

10:42:07.653 [http-apr-8080-exec-7] DEBUG o.s.web.servlet.DispatcherServlet - DispatcherServlet with name 'dispatcher' processing POST request for [/logout] 
10:42:07.653 [http-apr-8080-exec-7] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /logout 
10:42:07.654 [http-apr-8080-exec-7] DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Did not find handler method for [/logout] 
10:42:07.654 [http-apr-8080-exec-7] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Matching patterns for request [/logout] are [/**] 
10:42:07.654 [http-apr-8080-exec-7] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - URI Template variables for request [/logout] are {} 
10:42:07.654 [http-apr-8080-exec-7] DEBUG o.s.w.s.h.SimpleUrlHandlerMapping - Mapping [/logout] to HandlerExecutionChain with handler [org.[email protected]45dfaa56] and 1 interceptor 
10:42:07.654 [http-apr-8080-exec-7] DEBUG o.s.w.s.m.a.ResponseStatusExceptionResolver - Resolving exception from handler [org.[email protected]45dfaa56]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported 
10:42:07.654 [http-apr-8080-exec-7] DEBUG o.s.w.s.m.s.DefaultHandlerExceptionResolver - Resolving exception from handler [org.[email protected]45dfaa56]: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported 
10:42:07.654 [http-apr-8080-exec-7] WARN o.s.web.servlet.PageNotFound - Request method 'POST' not supported 
10:42:07.654 [http-apr-8080-exec-7] DEBUG o.s.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'dispatcher': assuming HandlerAdapter completed request handling 
10:42:07.654 [http-apr-8080-exec-7] DEBUG o.s.web.servlet.DispatcherServlet - Successfully completed request 

전체 설치 내가 메인 방법을 통해 프로젝트를 시작하고있다 왜 그러나이 바람둥이 서버의 전쟁으로 배포하지 않을 때 누군가가 나를 설명 할 수 있습니까?

+0

당신이 당신의 설정 클래스 내 대답을 참조하십시오 – Aeseir

+0

을 기쁘게 표시 할 수 있습니다, 나는 해결책을 발견 – sisu

답변

2

방금 ​​해결책을 찾았습니다. WAR의 경우 다른 클래스를 추가해야합니다. 내 구성 패키지에 다른 구성 클래스가있는 곳을 추가했습니다.

import org.springframework.security.web.context.*; 

public class MessageSecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { 
} 

이렇게하면됩니다. 이 설명이 튜토리얼에서는

가 : http://docs.spring.io/autorepo/docs/spring-security/3.2.x/guides/hellomvc.html#registering-spring-security-with-the-war

관련 문제