Вопрос

I have SessionScoped bean called userSession to keep track of the user ( username, ifLogged, etc). I want to filter some pages and therefore I need to access the bean from the webFilter I created. How do I do that? I looks like its even impossible to import the bean to be potenitally visible.

Это было полезно?

Решение

Under the covers, JSF stores session scoped managed beans as an attribute of the HttpSession with the managed bean name as key.

So, provided that you've a @ManagedBean @SessionScoped public class User {}, just this should do inside the doFilter() method:

HttpSession session = ((HttpServletRequest) request).getSession(false);
User user = (session != null) ? (User) session.getAttribute("user") : null;

if (user != null && user.isLoggedIn()) {
    // Logged in.
}

Or, if you're actually using CDI instead of JSF to manage beans, then just use @Inject directly in the filter.

See also:

Другие советы

As an alternative you can use CDI-beans and inject your sessionbean normally.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top