- 문제 : 기존 Context Root 를 변경하면서, 로그인이 되지 않고 403이 떨어지는 에러 발생
- 원인 : Spring Security default 옵션이 /login 으로 매핑되어 있음
매핑을 바꿀경우 form-login 에 Parameter 추가 필요
- 해결 : form-login 에 login-processing-url="/test/login" 추가
Context-Root를 변경하면서, Login Form이 실행되지 않는 현상이 발생했다.
Spring Framework 을 사용하고 있었으며, 로그인은 Spring Security를 이용했었다.
각종 Filter들과 Interceptor가 잘못되었는지 온갖 설정을 다 바꾸어 보았는데 Login Form에 걸리지 않았다.
<!-- web.xml 설정 (Context-Root 변경 전)-->
...
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/spring/context-*.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
...
<!-- web.xml 설정 (Context-Root 변경 후)-->
...
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/spring/context-*.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/test/*</url-pattern>
</servlet-mapping>
...
Login Url 이 "/login"에서 "/test/login" 으로 변경된 후, Spring Security 의 form-login에 설정한 Login Process 가 실행되지 않았다.
원인은 Spring-Security의 경우, form-login 은 deault로 "/login" 으로 설정되어있다.
만약 "/login"이 아닌 다른 루트를 설정하고 싶다면, login-processing-url 을 별도로 설정해주어야 한다.
<!-- context-security.xml 설정 (form-login 변경 전)-->
...
...
<!-- context-security.xml 설정 (form-login 변경 후)-->
...
...
'Programming > Spring' 카테고리의 다른 글
STS(Spring Tool Suite) 다운로드 및 설치하기 (0) | 2019.02.23 |
---|