Search code examples
sessionjsf-2.2phaselistener

JSF 2.2: PhaseListener shall only run before first request of a session


I'm working on a PhaseListener which runs before RESTORE_VIEW and I need to know whether it runs for the first time in the current session or not (so that I can do some auto-login for stay-logged-in-users).

Any hints for me?


Solution

  • Yes, you can do such a thing. I have a same phase listener:

    @Override
    public PhaseId getPhaseId() {
        return PhaseId.RESTORE_VIEW;
    }
    
    @Override
    public void beforePhase(PhaseEvent event) {
        FacesContext ctx = FacesContext.getCurrentInstance();
        if (!ctx.isPostback()) {
        authRet = // check for active session
        if (!authRet) {
             if (...)// check for cookies { //create auth}
             else { // redirect to login }
        }
    }