2016-02-29 5 views
0

Я работаю над AuthenticationFilter, чтобы перенаправить пользователя, когда он не вошел в систему. Я использую TomEE 7.0.0-M2, поэтому с поддержкой Java-EE7.Как получить доступ к @SessionScoped beans из @WebFilter

AuthenticationFilter

@WebFilter(urlPatterns = "/*", dispatcherTypes = {DispatcherType.FORWARD, DispatcherType.REQUEST}) 
public class AuthenticationFilter implements Filter { 

@Inject 
private LoginBean loginBean; 
... 

LoginBean

import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 
import java.io.Serializable; 

@Named 
@SessionScoped 
public class LoginBean implements Serializable { 

Проблема заключается в том, что вводят LoginBean не экземпляр из login.xhtml. Поэтому я не могу проверить, был ли пользователь успешно зарегистрирован.

В LoginBean нет атрибутов сеанса, но я нашел правильный loginBean here, но я понятия не имею, как я могу получить к нему доступ. Но похоже, что компонент находится в CDI, но как я могу получить к нему доступ из WebFilter?

ответ

0

Я до сих пор нет ответа, но в другое решение, которое BalusC упомянутое here:

Когда пользователь успешно вошел я просто добавить loginBean вручную в sessionMap

FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("loginBean", this); 

В WebFilter я обращаюсь к loginBean с помощью

session.getAttribute("loginBean") 

Это хорошее решение? Я имею в виду .. звучит как обходной путь.