Bom dia pessoal
Tópicos sobre login existem vários mas não consegui nenhum que me ajudasse.
Quero um fazer um login em JSF. Montei a página login.xhtml com o formulário<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.prime.com.tr/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<link type="text/css" rel="stylesheet" href="./resources/css/personalizado.css"/>
<title><ui:insert name="title">SISP - Sistema Integrado de Saúde Pública</ui:insert></title>
</h:head>
<body>
<h:form >
<div align="center">
<br/>
<br/>
<br/>
<p:panel header="Autenticação de Usuário" style="width: 400PX">
<p:messages />
<h:panelGrid columns="2" cellspacing="15%" >
<h:outputText value="Usuário: "/>
<h:inputText value="#{loginBean.usuario.login}" id="us" style="width: 250PX" required="true" requiredMessage="Campo [Usuário] obrigatório"/>
<h:outputText value="Senha "/>
<h:inputSecret value="#{loginBean.usuario.senha}" id="sen" style="width: 250PX" required="true" requiredMessage="Campo [Senha] obrigatório"/>
</h:panelGrid>
<h:commandButton value="OK" title="Ok" action="#{loginBean.verificarUsuario}" style="width: 100PX" />
<h:commandButton value="Cancela" style="width: 100PX" />
</p:panel>
</div>
</h:form>
</body>
</html>
//imports ocultados
@ManagedBean
public class loginBean {
Connection conexao = new FabricaConexao().fazConexao(); //Cria uma nova conexao ao banco de dados
//cria um novo objeto(modelo) usuario e seus gets e sets
Usuario usuario = new Usuario();
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
////////////////////////////
public List<Usuario> getusuarios() throws SQLException {
List<Usuario> usuarios = new ArrayList<Usuario>();
String sql = "select idpermissao, login, senha from usuario where login=? and senha=?";
PreparedStatement stmt;
stmt = this.conexao.prepareStatement(sql);
stmt.setString(1, getUsuario().getLogin());
stmt.setString(2, getUsuario().getSenha());
ResultSet rs = stmt.executeQuery();
try {
while (rs.next()) {
Usuario usuario = new Usuario();
int idpermissao = rs.getInt("idpermissao");
String login = rs.getString("login");
String senha = rs.getString("senha");
usuario.setIdpermissao(idpermissao);
usuario.setLogin(login);
usuario.setSenha(senha);
usuarios.add(usuario);
}
} catch (SQLException ex) {
Logger.getLogger(loginBean.class.getName()).log(Level.SEVERE, null, ex);
}
return usuarios;
}
public String verificarUsuario() {
if (isUsuarioValido(null, null)) {
return "sucesso";
} else {
return "erro";
}
}
//Métodos responsáveis pela validação de usuários, login
public static boolean isUsuarioValido(String login, String senha) {
String user = null;
String pass = "null";
if ((login.equals(user)) && (senha.equals(pass))) {
return true;
}
return false;
}
}
Criei uma lista pra me retornar somente o usuário que contenha login e senha iguais ao informado, os métodos verificarUsuario e isUsuarioValido foram utilizados de um exemplo que achei na net, o problema é que eu travei na hora de comparar se o valor informado na página é igual ao retornado na lista.
Não sei se esta forma está correta.
Desde já obrigado.