我有一个 Wicket 应用程序(网址是: localhost:7001 / myWicketApp ),它以登录问题开头。这很好用。在我的主页中,我有一个Sign Out
链接。
我想要的是什么:如果我点击此链接,它应该从会话中退出,然后转到另一个网页等。 www.google.com 我写了这个注销的java代码:
private AjaxLink createSignOutLink() {
return new AjaxLink("signOutLink") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
S2rtSession.get().invalidate();
S2rtSession.get().logout();
throw new RedirectToUrlException("http://www.google.com");
}
};
}
发生了什么:当我点击它时,它会转到新页面( www.google.com ),因此它似乎工作正常。 但是当我点击浏览器的BACK
按钮(或者我再次输入我的网址而不关闭浏览器并按ENTER键)时,它会返回我的页面而不会要求输入用户名和密码。所以签出没有发生。
缺少什么?有办法,永久退出,或浏览器缓存用户名和密码,而不关闭浏览器,它将无法正常工作?
我希望有一种方法可以从缓存和会话中删除所有内容。
谢谢!
答案 0 :(得分:1)
此代码适用于我,但在wicket 1.5.8中。但可能有帮助
public class MyAppSession extends AuthenticatedWebSession implements IClusterable
我的退出链接是:
logOut = new Link<Page>("logOut") {
private static final long serialVersionUID = 1L;
@Override
public void onClick() {
//MyAppSession.get().invalidate(); - **I do not remember why, but in sources i have this line an it is commented!!!**
MyAppSession.get().signOut();
setResponsePage(WebApplication.get().getHomePage());
}
};
答案 1 :(得分:1)
也许凭据保存在Cookie中,请尝试以下代码:
private AjaxLink createSignOutLink() {
return new AjaxLink("signOutLink") {
private static final long serialVersionUID = 1L;
@Override
public void onClick(AjaxRequestTarget target) {
IAuthenticationStrategy strategy = WebApplication.get().getSecuritySettings()
.getAuthenticationStrategy();
strategy.remove();
S2rtSession.get().logout();
throw new RedirectToUrlException("http://www.google.com");
}
};
}