Login com JSF+Hibernate+Primefaces

Bom dia meus amigos, como vão?
Estou desenvolvendo um sistema que necessita de uma tela de login logo no inicio.
Vejam como tentei fazer:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p='http://primefaces.org/ui'>
    <h:head>
        <title>Identifique-se</title>
    </h:head>
    <h:body onload="dlgLogin.show();">
        <h:form id='formulario'>
            <p:dialog id='dlgLogin'
                      widgetVar="dlgLogin"
                      closable="false"
                      resizable="false"
                      modal="true"
                      appendToBody="true"
                      header="Identifique-se">
                <h:panelGrid columns='2'>
                    <p:outputLabel value="Login: " />
                    <p:inputText id='txtLogin'
                                 value='#{usuarioMB.loginUsuario}' />
                    <p:outputLabel value='Senha: ' />
                    <p:password id='txtSenha'
                                value='#{usuarioMB.senhaUsuario}' /> 
                    <p:commandButton value="Entrar"
                                     icon='ui-icon-check'
                                     actionListener="#{usuarioMB.validarAcesso()}"
                                     oncomplete="dlgLogin.hide()"/>
                </h:panelGrid>
            </p:dialog>
        </h:form>
    </h:body>
</html>

Ai minha ideia era, no metodo validarAcesso (que no momento nao possui nada), verificar se o usuario esta correto ou nao.
Eu achei que, retornando um “false” no metodo validarAcesso fizesse com que a tela de login permanecesse ate o usuario digitar usuario e senha corretos, mas nao rsrs.
Alguem tem ideias de como fazer isso, da forma mais simples possivel. Meu sistema se trata de um trabalho de conclusao de curso =/

Muito obrigado galera
[]'s

Cara a resposta que vou te dar talvez não seja a melhor forma de fazer,
pois estou começando em java.

Mas é um começo…rs

No código no servidor, na sua função validaAcesso, depois que fizer todos os testes, você inclui no final dela a linha:

//se validou
RequestContext.getCurrentInstance().addCallbackParam("result", "ok");
//ou se nao validou:
RequestContext.getCurrentInstance().addCallbackParam("result", "Senha incorreta");

Lembrando que você terá que importar a biblioteca :

import org.primefaces.context.RequestContext;

Ok, aí no xhtml, no seu commandButton faz assim:

 &lt;p:commandButton value="Entrar"  
                                     icon='ui-icon-check'  
                                     actionListener="#{usuarioMB.validarAcesso()}"  
                                     oncomplete="checkValida(xhr,status,args,formulario);"/&gt;  

Note que eu mudei o valor do atributo “oncomplete” pra ao invés de fechar o dialog, ele chamar uma função javascript.

Essa função, você pode ou colocar no próprio xhtml, ou fazer uma referencia pra um arquivo .js.

OK, aí, sua função javascript fica assim:

function checkValida(xhr, status, args, dialog) {
    
if(args.result!='ok') {
        alert(result);
    } else {
        dialog.hide();
    }
}

Cara isso é muito usado pra validação de forms.
Creio que pra validacao do login, tambem poderia ser usado.

Mas, tem um porém, como eu disse, sou iniciante tambem.
E por questoes de seguranca, acho que essa não é a melhor solucao,
já que o que decide se o usuário vai entrar no sistema ou não é um javascript, que fica disponível no ambiente do cliente.

Vou pensar outras solucoes e posto aki…

Valew