Dúvida com página de login (PhaseListener)

Bom dia,

comecei a estudar um sistema de login e to seguindo um tutorial mas acho que não ficou muito claro pra mim…

[code]public class AuthorizationListener implements PhaseListener {

@Override
public void afterPhase(PhaseEvent event) {
    

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

    boolean isLoginPage = (currentPage.lastIndexOf("login.jspx") > -1);
    HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(true);
    Object currentUser = session.getAttribute("currentUser");

    System.out.println("Current page: " + currentPage);
    System.out.println("Login page: " + isLoginPage);
    System.out.println("Current user: " + currentUser);

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

@Override
public void beforePhase(PhaseEvent event) {

}

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

}
[/code]

alguém sabe me dizer quando e como as variáveis ‘isLoginPage’ e ‘currentUser’ seriam alteradas ? porque na pagina de login eu apenas faço a autenticação no banco.

Obrigado.

[quote=betond]Bom dia,


        boolean isLoginPage = (currentPage.lastIndexOf("login.jspx") > -1);

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

}

Obrigado.[/quote]

na primeira linha verifica se a origem é a página de login. Se for, “isLoginPage” é igual a true.

na segunda linha, currentUser é atribuído através do valor capturado da sessão, que provavelmente está presente na página login.jspx

vc por acaso não tem mapeado em algum lugar (provavelmente em um ManagedBean com escopo de sessão) o “currentUser”?

agora a questão propriamente dita, de como isso acontece, deve ser respondida pela compreensão do ciclo de vida do JSF

http://www.ibm.com/developerworks/library/j-jsf2/
http://download-llnw.oracle.com/javaee/1.4/tutorial/doc/JSFIntro10.html
http://www.roseindia.net/jsf/jsflifecycle.shtml

Realmente, você está certo, quando é direcionado para login.jspx o valor de isLoginPage se torna true.
Mas quanto ao currentUser, é exatamente essa minhas maior dúvida… não consigo enxergar como eu vou capturar esse valor após validar o login. E também não foi mapeado em nenhum lugar esse ‘currentUser’, o único mapeamento relacionado ao problema segue abaixo:

[code]
/area_restrita.jspx

loginPage
/login.jspx

<lifecycle>
<phase-listener>login.AuthorizationListener</phase-listener>
</lifecycle>[/code]

Obrigado pela ajuda…

O betond , eu estou com o mesmo problema… você ja conseguiu resolver ???

to começando em javaweb agora e to apanhando um monte nisto…

como eu trato esse currentUser ? tenho um metodo cadastrar na classe Login mas não sei o q fazer depois q eu valido o usuario…

qq eu faco pra mudar o valor de "currentUser’ ,vlw

[quote=betond]Realmente, você está certo, quando é direcionado para login.jspx o valor de isLoginPage se torna true.
Mas quanto ao currentUser, é exatamente essa minhas maior dúvida… não consigo enxergar como eu vou capturar esse valor após validar o login. E também não foi mapeado em nenhum lugar esse ‘currentUser’, o único mapeamento relacionado ao problema segue abaixo:

[code]
/area_restrita.jspx

loginPage
/login.jspx

<lifecycle>
<phase-listener>login.AuthorizationListener</phase-listener>
</lifecycle>[/code]

Obrigado pela ajuda…[/quote]

posta ae a página de login, plz …

 maldito, blz!

Estou com este mesmo problema, você conseguiu resolver o problema do “currentUser”, se sim pode postar como?

vlw!