Подтвердить что ты не робот

Доступ к сеансу управления сеансом, поддерживаемым JSF bean в веб-фильтре

У меня есть SessionScoped bean, называемый userSession, чтобы отслеживать пользователя (имя пользователя, ifLogged и т.д.). Я хочу отфильтровать некоторые страницы, и поэтому мне нужно получить доступ к bean из созданного веб-фильтра. Как мне это сделать? Мне кажется, что даже невозможно импортировать bean, чтобы быть потенциально видимым.

4b9b3361

Ответ 1

Под обложками JSF сохраняет управляемый сеанс beans как атрибут HttpSession с управляемым именем bean как ключ.

Итак, при условии, что у вас есть @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 для управления beans, просто используйте @Inject непосредственно в фильтре.

См. также:

Ответ 2

В качестве альтернативы вы можете использовать CDI- beans и обычно вводить свою сессию.