登录/重定向后丢失会话

问题描述 投票:0回答:1

我是Java菜鸟,我得到了修复旧Java应用程序中的错误的任务。不幸的是,我们不再有Java开发人员。

我从git获得了代码,并且该代码(希望)在生产中运行并且正在运行(错误除外)。所以我的问题应该是配置问题,而不是代码问题。

该应用程序使用了许多primefaces 4.0,并部署在jboss 7.1.1上

我运行了它,但是登录后(登录成功),我再次重定向到登录页面,而不是index.xhtml。

对于重定向,我们使用:

    private void redirect(String url) {
    ServletContext context = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();

    String redirectUrl = context.getContextPath() + "/" + url;

    log.info("redirect url: " + redirectUrl);
    try {
        FacesContext.getCurrentInstance().getExternalContext().redirect(redirectUrl);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

然后有一个过滤器可以读取会话:

HttpServletRequest servletRequest   = ((HttpServletRequest) req);
HttpSession session = servletRequest.getSession(false);

然后我们检查是否已登录:

boolean isLoggedIn = (session != null && session.getAttribute("user") != null);

session.getAttribute(“ user”)现在为空(我制作了一些调试日志),我想这是问题所在。

之前已在登录过程中设置了用户:

session.setAttribute("user", authUser);
this.authUser = authUser;
this.role = authUser.getRole();
log.info("submitAction(): User \"" + authUser.getUsername() + "\" logged in successfully");
this.redirect("index.xhtml");

服务器日志显示带有我的用户名的log​​.info,因此它不应为null。如上所述,this.this.redirect(“ index.xhtml”)进行重定向。

正如已经告诉过的,这应该是生产中的代码。任何人都知道我的本地环境可能会遇到什么问题?

编辑:多次调用过滤器的原因我想我检查了一个错误的过滤器。登录成功后,将发生重定向,然后在过滤器功能中,会话为null

redirect jsf primefaces
1个回答
0
投票

我在web.xml中发现了问题。以下条目是问题所在,似乎无法在我的本地PC上运行:

 <session-config>
      <cookie-config>
           <secure>true</secure>
      </cookie-config>
 </session-config>

删除安全标签后cookie起作用。

© www.soinside.com 2019 - 2024. All rights reserved.