2011-02-16 3 views
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); 
    } 

입니다 차단 및 리디렉션으로 인해 페이지를 리디렉션합니다.

이는이 문제를 해결하는 방법은 여러 가지이지만, 나는 그것들을 달성하는 방법을 모른다 :

  1. 는 요청의 URL을 감지 (하지만 난 방법을 알고하지 않는 것)를 확인하지 않습니다 로그인 페이지에 대한 인증. 또한이 솔루션을보다 융통성있게 만들고 싶습니다.
  2. 컨트롤러에서 직접 로그인 처리기를 선택하십시오. 어떻게해야합니까? 가능한가?
  3. 필자는 예제에서 org.springframework.web.servlet.handler.SimpleUrlHandlerMapping을 사용하여 인터셉터 매핑을 지정했다는 것을 알았습니다. 어쨌든 주석을 사용하고 있습니다. 주석을 사용하여 위의 주소 (accise? action = login)로 시작하지 않도록 인터셉터에 대한 다른 매핑을 지정하는 방법이 있습니까? 아니면 다른 매핑 스키마를 연결하는 것일까 요?

답변

1

스프링 보안을 사용하지 않는 특별한 이유가 있습니까?

IMHO는 간단하고 강력하며 심층적으로 테스트되었습니다.

사용자 정의 인증자를 간단히 구현하고 삽입 할 수 있으며, 스프링 보안이 리디렉션을 처리합니다.

관련 문제