2013-08-07 2 views
0

Wicket으로 첫 번째 Java 응용 프로그램을 만들고 Wicket 세션에 약간의 문제가 있습니다.하나 이상의 사용자가 로그인 된 Wicket 세션

문제점 : 두 번째 사용자가 응용 프로그램에 로그인 할 때 그는 첫 번째 사용자의 세션을 오버라이드합니다 -> 두 세션 모두 두 번째 세션에서 작업 중입니다. 두 사용자가 새로운 세션을 만들 수 있지만 로그인 할 때

내 코드 :.

WicketSession.java :

내 응용 프로그램 클래스의
public class WicketSession extends WebSession { 

private UserBean   currentUser; 

public WicketSession(Request request) { 
    super(request); 
} 

public static WicketSession get() { 
    return (WicketSession) Session.get(); 
} 
// getter/setter 

:

@Override 
public Session newSession(Request request, Response response) { 
    return new WicketSession(request); 
} 

및 로그인 (짧은에게 버전을 사용하여 읽을 수 있도록) :

@Override 
public final void onSubmit() { 

if (signIn(wiaUsername, wiaPassword)) { 
    getSession().bind(); 
    setResponsePage(new CharListDetail()); 
} else { 
    error("Unknown username/ password"); 
} 
} 

private boolean signIn(String username, String password) { 
    currentUser = UserProxy.getInstance().getElementByUser(username, password); 
    WicketSession.get().setCurrentUser(currentUser); 
    return true;  
} 

이 모든 것이 한 사용자에게 유용합니다. 그러나 두 번째 사용자가 로그인하는 순간

WicketSession.get().setCurrentUser(currentUser); 

현재 사용자를 새 사용자로 설정하고 로그인 한 두 사용자가 동일하게 설정합니다. 이 문제를 어떻게 방지합니까?

+1

두 번째 사용자가 세션을 무시하는 이유는 무엇이라고 생각하십니까? 동일한 브라우저에서 동시에 두 명의 사용자를 로그인 하시겠습니까? 브라우저가 다른 두 명의 사용자가 정상적으로 작동합니다. 세션도 싱글 톤이므로 로컬 스레드 변수이므로 두려워 할 필요가 없습니다. –

+0

테스트를 위해 두 명의 다른 사용자와 로그인 할 때 두 가지 브라우저를 사용합니다. 둘 다로 로그인하고 사용자 별 목록을 표시합니다. 첫 번째 사용자로 전환하고 페이지를 다시로드하면 두 번째 사용자의 목록이 표시됩니다. 목록은 다음과 같이 생성됩니다. CharProxy.getInstance(). getAllCharsForCurrentUser (WicketSession.get(). getCurrentUser()); – Markus

+0

'static'한정자에 대한 코드를 확인하십시오. 그것들은 일반적으로 교차 오염을 일으키는 경향이 있습니다. 또한 이전 버전에서는 스레드 로컬 저장소 정리에 문제가 있고, 때로는 한 사용자의 결과가 다른 사용자의 요청 범위로 유출되기 때문에 Wicket의 최신 안정 버전을 사용해야합니다. –

답변

0

그물을 많이 검색 한 결과 해결책을 찾았습니다.

문제는 currentUser를 String이 아닌 UserBean으로 저장했기 때문입니다. 나는 Wicket에서 Bean으로 사용자를 저장하는 것이 왜 작동하지 않는지 정확히 알지 못하지만, 이제는 마침내 작동합니다.

+0

사용자 bean이 Serializable을 구현하도록 시도하십시오 – pikand

+0

하지만, 불행히도 그렇게하지 않았습니다. – Markus

관련 문제