【发布时间】:2023-03-04 10:24:01
【问题描述】:
要使用我的 Java EE webapp 进行身份验证,我有一个与 LoginBean 关联的 login.xhtml JSF 页面。如果用户提供了有效的登录详细信息,LoginBean 会将值保存到会话映射中:
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("session-value", true);
现在我想在 LoginFilter(javax.servlet.Filter 的实现)中读取该值(称为“会话值”),但每次尝试访问该属性时,控制台都会告诉我我认为该属性为空:
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws Exception {
HttpSession session = ((HttpServletRequest) request).getSession();
Object attribute = session.getAttribute("session-value");
if(attribute != null) {
LOGGER.log(Level.INFO, ":)");
} else {
LOGGER.log(Level.INFO, "Attribute is null.");
}
chain.doFilter(request, response);
}
难道不能通过调用 HttpServletRequest 的会话来访问 JSF 会话映射吗?
【问题讨论】:
标签: session authentication servlets jsf-2 servlet-filters