2014-11-24 4 views
0

У меня есть приложение Vaadin 7, которое аутентифицируется против ldap с доменом безопасности, настроенным на автономном.xml моего сервера (jboss eap6). Все работает нормально, пока я не попытаюсь выйти из системы.Как аннулировать сеанс в приложении Vaadin 7?

В моем Vaadin UI я получил метод выхода из системы:

public void logout(){ 
    VaadinService.getCurrentRequest().getWrappedSession().invalidate(); 
    this.close(); 
} 

Когда я выполнить метод я получаю сообщение:

Сессия истекла Принять к сведению любых несохраненных данных, и нажмите здесь или нажмите клавишу ESC, чтобы продолжить.

Но когда я делаю это обновит страницу и я до сих пор вошли в

Есть ли что-нибудь еще мне нужно сделать, чтобы правильно закрыть сессию?

Спасибо!

+0

[Как перезапустить сеанс Vaadin?] (Http://stackoverflow.com/questions/26404821/how-to-restart-vaadin-session) – Krayo

ответ

0

Я думаю, что ваша проблема в том, что вы не можете закрыть приложение, потому что вы только что сделали недействительным сеанс. Попробуйте закрыть приложение, прежде чем вы аннулируете сеанс. Что-то вроде этого:

public void logout(){ 
    HttpSession ses = VaadinService.getCurrentRequest().getWrappedSession(); 
    this.close(); 
    ses.invalidate(); 
} 
0

Проблема была не в том, как я закрывал сессию в Ваадине. Проблема в том, что Jboss поддерживает аутентификацию пользователя ldap. Поэтому после того, как я закрыл сессию с

public void logout(){ 
    VaadinService.getCurrentRequest().getWrappedSession().invalidate(); 
    this.close(); 
} 

Я бы как-то получил новый идентификатор сеанса, но сервер сохранил аутентификацию пользователя. Я решил его использовать тот же фрагмент, чтобы выйти из системы, но управляя логином ldap из моего приложения. Поскольку я не использую домен безопасности jboss и вместо этого использую свой собственный экран входа, чтобы идти против ldap по коду, проблема исчезла.