Решение для требования 1) уже достигнуто решением для требования 2).Вы просто позволяете пользователю перейти по этому URL напрямую.Если пользователь все-таки не вошел в систему, перенаправьте его на страницу регистрации / входа.Вот как это обычно работает.
Вам необходимо реализовать Filter
, который прослушивает url-pattern
, соответствующий защищенным страницам.Например, /secured/*
, /protected/*
и т. Д. В методе doFilter()
вы просто проверяете наличие вошедшего в систему User
в текущем сеансе и обрабатываете соответствующим образом.Вот базовый начальный пример:
if (((HttpServletRequest) request).getSession().getAttribute("user") == null) {
// Not logged in, redirect to login page.
response.sendRedirect("login.jsf");
} else {
// Logged in, just continue with request.
chain.doFilter(request, response);
}
Чтобы заставить его работать с JSF, просто знайте тот факт, что JSF хранит управляемые bean-объекты области действия в качестве атрибутов HttpSession
с именем управляемого bean-компонента в качестве ключа.