我正在使用AuthenticationFilter在用户未登录时重定向。我使用的是TomEE 7.0.0-M2,因此支持Java-EE7。
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,但我不知道如何访问它。但看起来这个bean在CDI中,但我如何从WebFilter访问它?
答案 0 :(得分:0)
我仍然没有答案,但BalusC提到的另一个解决方案here:
当用户成功登录时,我只需手动将loginBean添加到sessionMap
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("loginBean", this);
在WebFilter中,我使用
访问loginBeansession.getAttribute("loginBean")
这是一个很好的解决方案吗?我的意思是......听起来像是一种解决方法。