【问题标题】:How to log out in wicket permanently?如何永久退出检票口?
【发布时间】:2014-01-25 19:40:08
【问题描述】:

我有一个 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 按钮(或者我再次输入我的 URL 而不关闭浏览器并按 ENTER)时,它会返回我的页面而不询问用户名和密码。所以退出并没有发生。

缺少什么?有没有办法,永久退出,或者浏览器缓存了用户名和密码,不关闭浏览器就不行了?

我希望有办法从缓存和会话中删除所有内容。

谢谢!

【问题讨论】:

    标签: java session wicket logout invalidation


    【解决方案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());
       }
    };
    

    【讨论】:

    • 对我不起作用。也许问题是我没有自己的登录页面,它在开始时使用浏览器的身份验证,而不是主页。
    • 是的。您的问题是使用基本身份验证。 stackoverflow.com/questions/233507/…
    【解决方案2】:

    也许凭据保存在 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");
                }
            };
        }
    

    【讨论】:

    • 不起作用。问题是我使用的是基本身份验证。不过谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2012-03-30
    • 2013-01-28
    • 2017-04-04
    相关资源
    最近更新 更多