Как реализовать LogoutFilter? - PullRequest
       19

Как реализовать LogoutFilter?

0 голосов
/ 04 октября 2018

Привет, ребята. Я создаю веб-приложение на Java с использованием JSF.Для аутентификации я использовал Apache Shiro. Я создал кнопку выхода из системы, которая вызывает метод выхода из системы shiro, а затем я перенаправляю пользователя на страницу входа.Но если я нажму кнопку «Назад», пользователь сможет перемещаться по страницам.Я прочитал об этом, и я понял, что я должен был реализовать свой собственный фильтр.Это код фильтра:

import al.ikubinfo.ipermit.bpmn.model.entities.UserEntity;
import al.ikubinfo.ipermit.bpmn.services.UserService;

public class LoginFilter implements Filter {

    private static final String LOGIN_VIEW = "/login.xhtml";

    @EJB
    private UserService userService;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {

        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;

        UserEntity currentUser = userService.getCurrentUser();
        if (currentUser == null) {
            httpServletResponse.sendRedirect(httpServletRequest.getServletContext().getContextPath() + LOGIN_VIEW);
        }

        else {
            chain.doFilter(request, response);
        }

    }

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

}

Я также включил его в web.xml, но он не работает.Приложение запускается успешно, но нет представления открывается.Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 02 декабря 2018

При использовании кнопки «Назад» вы видите кешированную версию страницы.Страница кэшируется локально в браузере.

После выхода из системы вы должны перейти на страницу входа

Используйте следующий javascript на этой странице

var url = window.location.href;
window.history.go(-window.history.length);
window.location.href = url;

Также попробуйте вставить

<META Http-Equiv="Cache-Control" Content="no-cache">
<META Http-Equiv="Pragma" Content="no-cache">
<META Http-Equiv="Expires" Content="0">

в страницы jsp, чтобы браузер не кэшировал страницы.

...