我正在使用 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);
将当前用户设置为新用户,并且两个登录用户都是相同的。我该如何防止这个问题?