如何从会话中排除特定的JSF页面

时间:2014-09-29 23:12:47

标签: jsf session primefaces

我有一个登录页面,当用户登录以停止随机页面遍历以添加某种形式的" security"到登录页面的页面。我使用了以下代码:here

public class AuthorizationListener implements PhaseListener {

 public void afterPhase(PhaseEvent event) {

  FacesContext facesContext = event.getFacesContext();
  String currentPage = facesContext.getViewRoot().getViewId();

  boolean isLoginPage = (currentPage.lastIndexOf("login.xhtml") > -1);
  HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);

  if(session==null){
      NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
      nh.handleNavigation(facesContext, null, "loginPage");
  }

  else{

      Object currentUser = session.getAttribute("username");

  if (!isLoginPage && (currentUser == null || currentUser == "")) {
      NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
      nh.handleNavigation(facesContext, null, "loginPage");
  }
 }
}

public void beforePhase(PhaseEvent event) {

}

 public PhaseId getPhaseId() {
     return PhaseId.RESTORE_VIEW;
 }
}

我如何编辑它以允许用户访问以下页面而不需要会话,也就是省略会话中的某些页面。

customerRegistration.xhtml
employeeRegistration.xhtml

目前它不允许我注册,因为没有创建会话。我试图编辑afterPhase()方法但没有成功。

如果需要更多详细信息,请告知我们。我是JSF2和Primefaces的新手,所以如果我需要添加/删除任何内容,请告诉我......

编辑我尝试了following但没有成功。

0 个答案:

没有答案