0

我正在开发 AuthenticationFilter 以在用户未登录时重定向用户。我使用的是 TomEE 7.0.0-M2,因此支持 Java-EE7。

身份验证过滤器

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

@Inject
private 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 ,但我不知道如何访问它。但看起来 bean 在 CDI 中,但我如何从 WebFilter 访问它?

4

1 回答 1

0

我仍然没有答案,但 BalusC 在这里提到的另一个解决方案:

当用户成功登录时,我只需将 loginBean 手动添加到 sessionMap

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

在 WebFilter 我访问 loginBean

session.getAttribute("loginBean")

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

于 2016-02-29T21:56:02.880 回答