Wicket Session,有多个用户登录

时间:2013-08-07 12:30:04

标签: java apache session wicket

我正在使用Wicket构建我的第一个Java应用程序,并且在Wicket Sessions中遇到了一些问题。

我的问题:当第二个用户登录应用程序时,他会覆盖第一个用户的会话 - >他们现在正在第二次会议上工作。虽然两个用户在登录时都会创建一个新会话。

我的代码:

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

在我的Application类中:

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

和登录(没有ifs的简短版本,使其可读):

@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 :(得分:0)

经过大量搜索后,我找到了解决方案。

问题是我将currentUser保存为UserBean而不是String。我不确切地知道为什么它不能在Wicket中将用户存储为Bean,但现在最终它正在工作。