[SPRING] 인터셉터 preHandle ()이 login.html로 리디렉션되지 않음
SPRING인터셉터 preHandle ()이 login.html로 리디렉션되지 않음
나는 스프링 어플리케이션을 가지고있다. index.jsp에 대한 직접 액세스를 막기 위해 sessionInterceptor를 도입했습니다. 사용자가 로그인하지 않은 경우 index.jsp에 액세스 할 수 없어야하며 login.html로 리디렉션되어야합니다. 코드는 preHandle () 메서드를 치고 모든 코드를 실행하지만 false를 반환하면 login.html로 리디렉션되지 않습니다. 뭐가 문제 야? 도움을 청하는 전문가가 있습니까? 미리 감사드립니다.
SessionInterceptor.java의 내 preHandle ()은 다음과 같습니다.
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
// if displaying the home page, make sure the user is reloaded.
if (request.getRequestURI().endsWith("login.html")) {
session.removeAttribute("isUserLoggedIn");
}
if (session.getAttribute("isUserLoggedIn") == null && !request.getRequestURI().endsWith("login")) {
response.sendRedirect(request.getContextPath() + "/login.html");
return false;
}
return true;
}
나는 다음을 시도했지만 모두 헛된 것입니다.
RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher("/login.html");
dispatcher.forward(request, response);
dispatcher-servlet.xml 설정은 다음과 같습니다.
<bean id="sessionInterceptor" class="com.xxx.xxx.xxx.SessionInterceptor" />
<bean id="annotationMapper" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<list>
<ref bean="sessionInterceptor" />
</list>
</property>
</bean>
<!-- Configures Handler Interceptors -->
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.xxx.xxx.xxx.SessionInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
web.xml은 다음과 같습니다.
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.html</welcome-file>
</welcome-file-list>
해결법
-
==============================
1.컨트롤러에서 캐치 될 논리 경로로 리디렉션을 시도 할 수 있습니다 시험
컨트롤러에서 캐치 될 논리 경로로 리디렉션을 시도 할 수 있습니다 시험
response.sendRedirect("/NotLogged");
그리고 다음과 같은 함수를 만듭니다.
@RequestMapping(value = {"/NotLogged"}, method = RequestMethod.GET) public String notLogged() { return "login.html"; }
나는 그것이 당신을 위해 일할 것이라는 점을 희망한다!
from https://stackoverflow.com/questions/22990378/interceptor-prehandle-not-redirecting-to-login-html by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 MVC : 오류가있는 페이지로 리디렉션하는 방법? (0) | 2019.05.02 |
---|---|
[SPRING] Spring MqttPahoMessageDrivenChannelAdapter 연결이 끊어졌습니다 : 연결이 끊어졌습니다; 다시 시도하는 (0) | 2019.05.02 |
[SPRING] 스프링 프로파일 변수 설정하기 (0) | 2019.05.02 |
[SPRING] @DecimalMin 및 @DecimalMax를 사용하여 List <BigDecimal>의 유효성을 검사하는 방법 (0) | 2019.05.02 |
[SPRING] 스프링 부트 최대 절전 모드 트랜잭션 없음 (0) | 2019.05.02 |