2016-02-29 88 views
0

我正在使用AuthenticationFilter在用户未登录时重定向用户。我使用的是TomEE 7.0.0-M2,因此支持Java-EE7。如何从@WebFilter访问@SessionScoped

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中的bean,但我如何从WebFilter访问它?

回答

0

我还没有一个答案,但该BalusC提到here的另一种解决方案:

当用户成功登录我只是手动添加loginBean到sessionMap

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

在网页过滤我访问loginBean与

session.getAttribute("loginBean") 

这是一个很好的解决方案吗?我的意思是..听起来像一个解决方法。

相关问题