Dá uma olhada em SQL e Banco de Dados.
Vc faria um select no banco com SQL.
Com Hibernate vc tentaria carregar o objeto user através das propriedades username e password.
Dá uma olhada em SQL e Banco de Dados.
Vc faria um select no banco com SQL.
Com Hibernate vc tentaria carregar o objeto user através das propriedades username e password.
Com o Hibernate você poderia fazer simplesmente isso:
Criteria c = getSession().createCriteria(Usuario.class);
c.add(Expression.eq("login", login));
Usuario usr = (Usuario) c.uniqueResult();
if (usr.validaSenha(senha))
return true;
onde validaSenha(senha) seria um método em Usuario que retorna true se a senha for igual à passada como argumento e false caso contrário. Claro que a sua aplicação deveria ter um minimo de infraestrutura (DAOs, ActiveRecord, ou o que você achar melhor) para facilitar esse trabalho.
Usuario usr = usuarioDAO.findByLogin(login);
if (usr.validaSenha(senha))
return true;
Sobre a query, você faz o mapeamento de objetos no hibernate, e não de queries. O mais próximo do mapeamento de uma query seria fazê-la usando a linguagem de query do hibernate, mas pelo que eu entendi do que você disse, você está confundindo as coisas.
Para quê? Entenda o seguinte: esse ‘user’ que viria do hibernate não seria uma String com o nome do usuário, seria um objeto usuário contendo os dados que estão no banco de dados (incluindo login e senha). Se você faz uma busca pelo usuário que possue o login ‘x’ usando o hibernate, ele vai lhe retornar o objeto usuário com os dados do usuário ‘x’ que estão no banco de dados, entendeu? Assim, é necessário apenas verificar se as senhas são iguais. Além disso, se fosse o caso, você não pode verificar se o login é igual OU a senha é igual, terá que verificar se os dois são iguais, então o certo ai seria um &&, e não um ||.
eu tava vendo um exemplo de autenticação (com o mentawai), o código do método é esse:
[code]public String execute() throws Exception {
String user = input.getStringValue(“username”);
String pass = input.getStringValue(“password”);
if (user == null || user.trim().equals("")) {
return ERROR;
}
if (pass == null || pass.trim().equals("")) {
return ERROR;
}
if (!user.equals("saoj") || !pass.equals("abc123")) {
return ERROR;
}
setUserSession(user);
return SUCCESS;
}[/code]
aqui, ele faz o que eu peço pra entrar. mas e quando eu tenho centenas de usuário gravados num banco de dados?
vejamos se eu estou certo: com hibernate, eu ia acessar o banco e a tabela, e com uma estrutura for, eu ia verificando até o fim da tabela se o user existia, se sim prosseguia pra estrutura for da pass, até o fim. isso tá certo? é assim que se faz uma autenticação com centenas de usuários em um banco?
valeus.
como em
SELECT tb FROM db
WHERE user = “saoj”
é isso? só mapear com o hibernate depois não é?
ah sim. eu quis dizer que seria mais ou menos como fazer a partir de comandos sql. normalmente com select. mapear os objetos da classe. o select foi só um exemplo. mas vamos ver se caiu minha ficha.
eu não poderia fazer isso?
if (user.equals(usuario) || pass.equals(senha)
return true;
onde usuario e senha são argumentos do método e depois mapear no hibernate? não dá?