我正在使用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);
将当前用户设置为新用户,并且两个登录用户都是相同的。我该如何防止这个问题?
答案 0 :(得分:0)
经过大量搜索后,我找到了解决方案。
问题是我将currentUser保存为UserBean而不是String。我不确切地知道为什么它不能在Wicket中将用户存储为Bean,但现在最终它正在工作。