1

我正在使用 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

在我的应用程序类中:

@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); 

将当前用户设置为新用户,并且两个登录用户都是相同的。我该如何防止这个问题?

4

1 回答 1

0

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

问题是我将 currentUser 保存为 UserBean 而不是 String。我不知道为什么它不能在 Wicket 中将用户存储为 Bean,但现在它终于可以工作了。

于 2013-08-09T11:51:25.670 回答