1

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

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

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

似乎 invalidateNow 在 onSubmit 事件之后完成,因为 Wicket 仍然给我相同的 LoginException。

任何想法如何使这项工作?

4

1 回答 1

0

为什么要重新登录?您是否尝试使用不同的凭据登录?

我曾经写过一个面板,如果用户(已经登录)有足够的权限,他可以作为另一个用户登录。我遇到了类似的问题,并通过强制 wicket 与ThreadContext.setSession(null).

所以你的代码会变成:

if (((AuthenticatedWebSession) getSession()).isUserAuthenticated()) {
   ((AuthenticatedWebSession) getSession()).invalidateNow();
   ThreadContext.setSession(null);
}
((AuthenticatedWebSession) getSession()).login(secureLoginContext);
于 2013-07-26T12:35:53.777 回答