2011-12-09 2 views
1

지금 우리는 스프링으로 만든 데스크톱과 모바일 버전의 사이트가있는 프로젝트를 진행하고 있습니다. 모바일과 데스크톱 버전이 동일한 스프링 보안 시스템을 공유하기를 원합니다.스프링에서 사용자 정의 인터 럽트 인터셉터를 사용하는 장치를 기반으로 사용자를 모바일 사이트로 리디렉션하는 가장 좋은 방법은 무엇입니까

우리는 스프링 모바일을 사용하여 장치가 모바일인지 여부를 감지하고 스프링 사이트 환경 설정 매개 변수를 사용할 수 있습니다.

스프링 모바일 리다이렉터는 다른 도메인 (예 : m.website.com)으로 리디렉션되는 것처럼 보이기 때문에 스프링 보안을 쉽게 사용하지 않습니다.

그래서 나는 사이트 내의 특정 디렉토리 (예 : "/ jsp/mobile /")로 리디렉션하기 위해 HandlerInterceptor를 사용한다고 생각합니다.

1)이 확장 된 HandlerInterceptor에서 preHandle 메소드에서 Spring Mobile 디바이스 감지기를 사용할 수 있습니까?

2) 리디렉션하는 가장 좋은 방법은 무엇입니까? a) 그냥 http 응답을 사용하거나 b) 어떻게 든 viewResolver를 변경하고 "/ jsp /"에서 "/ jsp/mobile /"로 접두어를 변경 하시겠습니까?

죄송합니다. 가능한 한 많은 정보를 넣기를 원했습니다.

건배

나는 현재 전 처리기 메서드에서의 HandlerInterceptor를 사용하고
+0

http://stackoverflow.com/q/8433274/106261 – NimChimpsky

답변

1

이 방법 requestUri을 통해 모바일 장치에서 오는 현재의 주소와 장소를 얻는 경우에 응용 프로그램, 모바일 기기인지 여부를 평가한다 응용 프로그램 컨텍스트의 이름 다음에 접두어 "m"을 붙입니다. 그런 다음 리디렉션을 수행

위해 response.sendRedirect ("/ 응용 프로그램/m을/.....") (documentation)

예를

/application/user   //recived 
/application/m/user   //sent 

문제는이 인터셉터는 차단 모든 요청을 그 요청이 같은 경로 붙어

  1. 경우 "/ 애플리케이션/m은/....."becaus, 그 휴대 기기에서 발생 확인할 : 그러므로 다음 평가할 필요 E은 "m"하고 요청이 모바일 장치에서 (모바일 버전 정상 공유 이러한 리소스를) 올 경우 요격 리디렉션 안 봄 핸들 정적 리소스를 할 경우 나에게

  2. 를 난데

1

답변 해 주셔서 감사합니다. 내가 한 것은의 HandlerInterceptor를 사용하고과 같이 포스트 핸들 방법에보기 이름을 변경 :

if (modelAndView.getViewName() != null) 
{ 
    modelAndView.setViewName("/mobile/" + modelAndView.getViewName()); 
} 
else 
{ 
    modelAndView.setViewName("/mobile/"); 
} 

플러스가이 생성자에 DeviceResolver를 주입하여, 장치가 이동 여부는 IF 다른 전년도에 싸여 그런 다음 로컬 장치를 확인하십시오.

관련 문제