我有一个登录页面,当用户登录以停止随机页面遍历以添加某种形式的" 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但没有成功。