Как выйти из калитки навсегда?

У меня есть приложение Wicket (URL-адрес: 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-адрес, не закрывая браузер и нажимая клавишу ВВОД), он возвращается на мою страницу БЕЗ запроса имени пользователя и пароля. Так что выхода не произошло.

Чего не хватает? Есть ли способ, чтобы выйти навсегда, или браузер кэширует имя пользователя и пароль, и, не закрывая браузер, он не будет работать?

Надеюсь есть способ удалить все из кеша и сессии.

Благодарю вас!


person victorio    schedule 25.01.2014    source источник


Ответы (2)


У меня этот код работает, но в калитки 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());
   }
};
person cache    schedule 25.01.2014
comment
не работает для меня. возможно, проблема в том, что у меня нет собственной страницы входа, она использует аутентификацию браузера в начале, а затем идет домашняя страница. - person victorio; 26.01.2014
comment
Да. Ваша проблема заключается в использовании базовой аутентификации. stackoverflow.com/questions/233507/ - person cache; 26.01.2014

Возможно, учетные данные сохранены в файлах 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");
            }
        };
    }
person andreicostea    schedule 14.02.2014
comment
не работает. проблема в том, что я использую базовую аутентификацию. но спасибо. - person victorio; 25.02.2014