Доступ к сеансу с областью действия управляемый компонент JSF в веб-фильтре
У меня есть sessionscoped bean, называемый userSession, чтобы отслеживать пользователя (имя пользователя, ifLogged и т. д.). Я хочу отфильтровать некоторые страницы, и поэтому мне нужно получить доступ к Бобу из веб-фильтра, который я создал. Как мне это сделать? Я смотрю, что его даже невозможно импортировать Боб, чтобы быть потенциально видимым.
2 ответа:
Под обложками JSF хранит управляемые бобы с областью действия сеанса как атрибут
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 для управления бобами, то просто используйте
@Inject
непосредственно в фильтре.См. также: