Обычное место для этого - Filter
.
Создайте класс, который implements
javax.servlet.Filter
и запишите следующую логику в методе doFilter()
:
if (((HttpServletRequest) request).getSession().getAttribute("user") == null) {
// Not logged in, so redirect request to login page.
((HttpServletResponse) response).sendRedirect("/login.jsf");
} else {
// Logged in, so just continue request.
chain.doFilter(request, response);
}
Сопоставьте этот фильтр в web.xml
с url-pattern
, например, /private/*
, /secured/*
, /restricted/*
и т. Д.
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.example.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/private/*</url-pattern>
</filter-mapping>
Если у вас есть личныйстраниц в папке /private
, тогда этот фильтр будет вызван и соответственно обработать присутствие вошедшего в систему пользователя в сеансе.
Обратите внимание, что я переименовал имя атрибута session
в user
, так как это делаетгораздо больше смысла.Сам по себе HttpSession
- это уже сеанс.В противном случае это было бы слишком двусмысленным и запутанным для других разработчиков, проверяющих / поддерживающих ваш код.