使用session.invalidate的JSF注销不会清除当前会话

时间:2016-05-06 16:02:42

标签: jsp logout httpsession

我正在尝试使用FacesContext invalidateSession方法在注销时清除会话。但是,当我尝试再次登录时,我收到了错误

组件ID form-dynamicTableBean0:devicesTable-dynamicTableBean0:j_idt1454:已在视图中找到DNP_ANALOGS。

似乎会议尚未结清。 这是我的退出代码:

public void logout() {
    // ((HttpSession)
    // FacesContext.getCurrentInstance().getExternalContext().getSession(true)).invalidate();

    // redirect to your login view:
    try {
      HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext()
          .getRequest();
      request.logout();
      ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();

      ec.invalidateSession();
      weblogic.servlet.security.ServletAuthentication.invalidateAll(request);
      FacesContext.getCurrentInstance().getExternalContext().redirect(ec.getRequestContextPath() + "/login.html");
    }
    catch (Exception e) {
      logger.error("Log out failed:", e);
    }
  }

如果我注释掉这两行......

ec.invalidateSession();
weblogic.servlet.security.ServletAuthentication.invalidateAll(request);

我没有收到错误,但是会话没有清除,我仍然可以看到上一次会话中的内容。

如何正确清除会话,或者您认为错误与注销有关?

0 个答案:

没有答案