Ola Senhores.
Estou com o seguinte problema, na minha tela de login nao consigo implementar case sensitive.
Preciso deixar a minha tela de login com case sensitive, onde eu cadastro o meu usuario com um nome “jose” e com uma senha “AsSiM”.
Pois quando eu faço o login se eu digitar o nome “jose” e a senha “assim” ou “aSsIm” ou “ASSIM” ele faz o login normal e nao da nenhum erro. Ja tentei varias maneiras e ja fiz outro topico sobre esse assunto =/
Meu valida usuario hoje esta assim.
public Usuario buscarUsuarioObj(Usuario usuarioBean) throws Exception {
Session session = HibernateUtil.getSessionFactory().openSession();
Usuario u = new Usuario();
try {
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Usuario.class);
criteria.add(Restrictions.eq("nome", usuarioBean.getNome()));
criteria.add(Restrictions.eq("senha", usuarioBean.getSenha()));
u = (Usuario) criteria.uniqueResult();
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
return (Usuario) u;
}
ja usei like, ja usei o .ignoreCase(), mas sem sucesso.
Será que alguem pode me ajudar, estou usando jsf com primefaces e hibernate (criteria).
Desde ja agradeço.
Provavelmente seu banco de dados está configurado para ignorar case, então ao fazer a consulta por SQL ele sempre irá encontrar.
O que você pode fazer é fazer a busca pelo nome somente e só retornar o usuário se a comparação do u.senha for válida…
[code]public Usuario buscarUsuarioObj(Usuario usuarioBean) throws Exception {
Session session = HibernateUtil.getSessionFactory().openSession();
Usuario u = new Usuario();
try {
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Usuario.class);
criteria.add(Restrictions.eq("nome", usuarioBean.getNome()));
u = (Usuario) criteria.uniqueResult();
transaction.commit();
if(u != null && u.getSenha().equals(usuarioBean.getSenha()))
return u;
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
return null;
}[/code]
ok, testarei em casa assim que chegar, e posto o resultado. Obrigado
Cara se você quer ignorar o case na hora de logar, ignora tbm na hora de gravar o usuário e a senha.
Quando der um submit no form que cadastra senha e usuario, da um toLowerCase() nos dois, assim vai pro banco tudo minusculo. Quando for fazer a busca para realizar o login, você da um toLowerCase() de novo nos dois antes de comprar com o que esta na base.
ajudei?
[]'s
Assim antes de buscar no banco ele vai por tudo em minuscula.
criteria.add(Restrictions.eq("nome", usuarioBean.getNome().toLowerCase()));
criteria.add(Restrictions.eq("senha", usuarioBean.getSenha().toLowerCase()));
Só não pode esquecer de fazer o mesmo antes do insert do usuarioBean.
[]'s