Я понимаю, что вы не используете управляемую контейнером аутентификацию Java EE.Именно при правильной настройке это будет приниматься во внимание автоматически.
При использовании домашней аутентификационной системы обычной практикой является размещение зарегистрированного пользователя в качестве атрибута в области сеанса, чтобы остаток вашего кода могперехватите это, так же как и фильтры сервлета .
Предполагая, что ваш метод входа выглядит следующим образом:
User user = userService.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
}
// ...
Тогда вы можете просто сделать следующее в фильтре:
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
if (session == null || session.getAttribute("user") == null) {
response.sendRedirect("login.jsp"); // No logged-in user found, so redirect to login page.
} else {
chain.doFilter(req, res); // Logged-in user found, so just continue request.
}
}
Сопоставьте этот фильтр с шаблоном URL, который охватывает защищенные страницы, например, /app/*
или что-то еще.