2013-07-15 54 views
1

當我嘗試登錄,而我已經登錄,檢票給我一個LoginException;其他登錄不被允許。這當然是有道理的。檢票無效會話和登錄在同一事件

我想做的事情是,如果已經有用戶登錄,並且在同一事件中登錄,會話將失效。

if (((AuthenticatedWebSession) getSession()).isUserAuthenticated()) { 
    ((AuthenticatedWebSession) getSession()).invalidateNow(); 
} 
((AuthenticatedWebSession) getSession()).login(secureLoginContext); 

看來invalidateNow是onSubmit事件之後完成的,因爲檢票仍然給我相同的LoginException異常。

任何想法如何使這項工作?

回答

0

爲什麼要重新登錄?你是否試圖用不同的憑據登錄?

我曾經寫過一個面板,用戶(已經登錄)可以作爲另一個用戶登錄,如果他有足夠的權利。我遇到了一個類似的問題,並通過強制wicket與ThreadContext.setSession(null)進行新的會話來修復它。

所以,你的代碼將成爲:

if (((AuthenticatedWebSession) getSession()).isUserAuthenticated()) { 
    ((AuthenticatedWebSession) getSession()).invalidateNow(); 
    ThreadContext.setSession(null); 
} 
((AuthenticatedWebSession) getSession()).login(secureLoginContext);