2017-09-06 6 views
1

세션이 종료 된 후 응답하지 않는 UI를 수정하려고합니다. 로그인 페이지로 HTTP 302 리디렉션으로 인해 Ajax 요청이 실패합니다. Ajax 오류는 Could not find root <ajax-response> element입니다.apache wicket에서 세션 시간이 초과되면 응답이없는 UI (실패한 ajax 호출)를 수정하는 방법은 무엇입니까?

Wicket.Event.subscribe('/ajax/call/failure', function(attrs, jqXHR, textStatus, jqEvent, errorThrown) { 
    handleAjaxCallFailure(attrs, jqXHR, textStatus, jqEvent, errorThrown); 
}); 

을하지만 HTTP 응답, 응답 코드 또는 다른 HTTP 헤더를 얻을 수있는 합리적인 방법을 찾을 수 없습니다 :

나는 아약스 실패 이벤트에 가입했습니다. 나는 또한 시도했다 :

$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) { 
    handleAjaxError(event, jqXHR, ajaxSettings, thrownError); 
}); 

그러나 이것은 전혀 발사되지 않는다. 아파치 개찰구 7.6.0을 사용하고 있습니다. 다른 방법으로 사용자를 로그인 페이지로 강제 전환 할 수 있습니까?

답변

0

줄에 약간의 오류가 있어야합니다.

일반적으로 Wicket은 <redirect>../the/path/to/login</redirect>에 단일 요소가있는 적절한 Ajax 응답 (XML)을 반환하고 wicket-ajax-jqeury.js가 처리하여 리디렉션합니다.

또한 Wicket이 같은 방식으로 처리하는 Ajax-Location이라는 응답 헤더가있을 수 있습니다.

응답 헤더와 본문을 확인하십시오. 여기에 붙여 넣으십시오!

+0

스프링 보안 필터가 세션이 유효하지 않아 브라우저가 빈 몸체로 HTTP 302를 받고 로그인 페이지를 가리키는 위치를 리디렉션하는 이유 때문에 개찰이 요청을받지 못한다고 생각합니다. – viliam

+2

감사합니다. @ martin-g, wicket ajax 호출에 대한 사용자 지정 리디렉션 전략을 사용하여 LoginUrlAuthenticationEntryPoint의 사용자 지정 구현을 생각해 냈습니다. – viliam