2013-06-05 3 views
0

브라우저를 닫거나 다른 사이트에 대한 링크를 클릭하면 사용자를 로그 아웃해야하는 Wicket 앱에서 작업하고 있습니다. 나는 Invalidate Wicket session after displaying message과 rotsch의 대답을 발견했다. 그것은 위대한 토대였다. 내 문제는 지금, 그 능력을 세션을 무효화 자바 스크립트를 호출하는 것입니다. 이 세션을 무효화 할 수있는 JS 호출에서 내 시도는 다음과 같습니다Wicket 6 JavaScript의 세션 무효화

public class PageExitBehaviour extends Behavior{ 

@Override 
public void renderHead(Component component, IHeaderResponse response) { 
    super.renderHead(component, response); 
    response.render(new OnDomReadyHeaderItem("window.onbeforeunload = function (e) {" 
      + "getSession().invalidate();" + "};")); 

} 

누군가가 "= window.onbeforeunload") (그것이 대해 getSession() 무효화를 호출 할 후에 넣어 무엇을 알고 있나요.? 아니면 누군가 브라우저 창을 닫을 때 사용자를 로그 아웃하는 다른 방법을 알고 있습니까?

답변

2

세션이 서버 측에서 관리되므로 사용자가 페이지를 떠날 때 서버에 AJAX 요청을 보내야합니다. 다음 Behavior 구현은이를 수행합니다.

public class PageExitLogoutBehavior extends AbstractDefaultAjaxBehavior { 

    @Override 
    public void renderHead(Component component, IHeaderResponse response) { 
    super.renderHead(component, response); 
    response.render(new OnDomReadyHeaderItem(String.format(
      "window.onbeforeunload = function(e){ %s };", 
      this.getCallbackScript()))); 
    } 

    @Override 
    protected void respond(AjaxRequestTarget target) { 
    System.out.println("logging out..."); 
    target.getPage().getSession().invalidate(); 
    } 

} 

저에게 맞는 작품인지 알려주세요.

+0

완벽하게 작동합니다. 감사합니다. AJAX를 필요로하는 것에 대해 명확히 설명해 주셔서 감사합니다. –

관련 문제