Session Wicket无效会话&;登录同一事件

Session Wicket无效会话&;登录同一事件,session,login,wicket,Session,Login,Wicket,当我尝试在已经登录的情况下登录时,wicket会给我一个LoginException;不允许额外登录。这当然有道理 我想做的是,如果已经有用户登录,则使会话无效,并在同一事件中登录 if (((AuthenticatedWebSession) getSession()).isUserAuthenticated()) { ((AuthenticatedWebSession) getSession()).invalidateNow(); } ((AuthenticatedWebSession)

当我尝试在已经登录的情况下登录时,wicket会给我一个LoginException;不允许额外登录。这当然有道理

我想做的是,如果已经有用户登录,则使会话无效,并在同一事件中登录

if (((AuthenticatedWebSession) getSession()).isUserAuthenticated()) {
   ((AuthenticatedWebSession) getSession()).invalidateNow();
}
((AuthenticatedWebSession) getSession()).login(secureLoginContext);
在onSubmit事件之后,invalidateNow似乎完成了,因为Wicket仍然给我相同的LoginException


有什么办法可以让它工作吗?

为什么要再次登录?您正在尝试使用不同的凭据登录吗

我曾经写过一个面板,其中一个用户(已经登录)如果拥有足够的权限,可以作为另一个用户登录。我遇到了一个类似的问题,并通过强制wicket使用
ThreadContext.setSession(null)
创建一个新会话来解决了这个问题

因此,您的代码将变成:

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