1
나는 인증을 목적으로 Spring 요청 인터셉터를 작성했으며 HandlerInterceptorAdapter를 확장했다. 내 서블릿 컨텍스트에서이 라인을 설정 한 : 그것은 도달하지 않습니다 때문에스프링 인터셉터에서 특정 주석 처리기를 전달하는 방법은 무엇입니까?
<mvc:interceptors>
<bean class = "it.jsoftware.jacciseweb.controllers.AuthInterceptor">
<property name="manServ" ref = "acciseService"></property>
</bean>
</mvc:interceptors>
및 사전 핸들 방법은 리디렉션 루프를 생성이 어쨌든 같은
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession sess = request.getSession();
String path = request.getPathTranslated();
boolean autenticated = maincont.isAuthenticated(sess);
if (!autenticated){
response.sendRedirect("accise?action=login");
return false;
}
return super.preHandle(request, response, handler);
}
입니다 차단 및 리디렉션으로 인해 페이지를 리디렉션합니다.
이는이 문제를 해결하는 방법은 여러 가지이지만, 나는 그것들을 달성하는 방법을 모른다 :
- 는 요청의 URL을 감지 (하지만 난 방법을 알고하지 않는 것)를 확인하지 않습니다 로그인 페이지에 대한 인증. 또한이 솔루션을보다 융통성있게 만들고 싶습니다.
- 컨트롤러에서 직접 로그인 처리기를 선택하십시오. 어떻게해야합니까? 가능한가?
- 필자는 예제에서 org.springframework.web.servlet.handler.SimpleUrlHandlerMapping을 사용하여 인터셉터 매핑을 지정했다는 것을 알았습니다. 어쨌든 주석을 사용하고 있습니다. 주석을 사용하여 위의 주소 (accise? action = login)로 시작하지 않도록 인터셉터에 대한 다른 매핑을 지정하는 방법이 있습니까? 아니면 다른 매핑 스키마를 연결하는 것일까 요?