Управляемый компонент JSF в рамках сеанса доступа в веб-фильтре
У меня есть бин SessionScoped, называемый userSession для отслеживания пользователя (имя пользователя, ifLogged и т. Д.). Я хочу отфильтровать некоторые страницы и, следовательно, мне нужно получить доступ к bean-компоненту из созданного мной веб-фильтра. Как я могу это сделать? Похоже, что даже импортировать боб невозможно, чтобы быть потенциально видимым.
2 ответа
Под прикрытием JSF хранит управляемые bean-объекты в рамках сеанса как атрибут HttpSession
с именем управляемого бина в качестве ключа.
Итак, при условии, что вы @ManagedBean @SessionScoped public class User {}
Меньше это следует делать внутри doFilter()
метод:
HttpSession session = ((HttpServletRequest) request).getSession(false);
User user = (session != null) ? (User) session.getAttribute("user") : null;
if (user != null && user.isLoggedIn()) {
// Logged in.
}
Или, если вы на самом деле используете CDI вместо JSF для управления bean-компонентами, просто используйте @Inject
прямо в фильтре.
Смотрите также:
В качестве альтернативы вы можете использовать CDI-бины и нормально вводить сессионный боб.