как очистить пользователей после выхода из системы? - PullRequest
0 голосов
/ 18 апреля 2011

Случай прост: пользователь нажимает кнопку выхода из системы, переходит в LogoutFilter и:

    HttpServletRequest hreq = (HttpServletRequest) request;
    hreq.getSession(false).invalidate();

    HttpServletResponse httpResponse = (HttpServletResponse) response;

    httpResponse.reset();

    httpResponse.setHeader("Cache-Control", "no-cache");
    httpResponse.setHeader("Pragma", "no-cache");
    httpResponse.setHeader("Cache-Control", "no-store");
    httpResponse.setHeader("Cache-Control", "must-revalidate");
    httpResponse.setDateHeader("Expires", 0);

    chain.doFilter(request, response);

А на странице ссылка для входа показана. Проблема проста: сеанс воссоздан, но пользовательские субъекты разбиты на блоки, поэтому не отображается всплывающее окно входа в систему и приложение использует кэшированные принципалы, поскольку request.getUserPrincipals () возвращает не нулевой объект.

Вопрос прост: есть ли способ также удалить учетные записи пользователей, поэтому браузер просит снова войти в систему после выхода из системы?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2011

Когда пользователь выходит из системы, я бы рассмотрел возможность перенаправить его (используя перенаправление 302) на страницу «вышел из системы» после того, как вы аннулировали его сеанс. Это «надеюсь» остановит request.getUserPrincipals () от возврата чего-либо.

Кстати, работа с кешем, которую вы делаете, никак не влияет на кеш веб-приложений. Здесь вы указываете, как веб-клиенты и веб-прокси должны учитывать кэширование этого конкретного запроса. Таким образом, эти значения используются после того, как запрос покидает ваш сервер и уходит «в дикую природу».

0 голосов
/ 18 апреля 2011

Вместо того, чтобы просто очищать кэш при выходе из системы, используйте фильтр для вашего приложения, который всегда устанавливает эти мета-значения в ответ для каждого запроса к странице в вашем приложении. Таким образом, ни одна из ваших страниц не будет кэширована. Очистите кеш браузера и попробуйте снова. Это что-нибудь исправляет?

...