public Login authenticate(Login login) {
String query = "SELECT L FROM Login AS L WHERE L.email=? AND L.password=?";
Object[] parameters = { login.getEmail(), login.getPassword() };
List<Login> resultsList = (getHibernateTemplate().find(query,parameters));
if (resultsList.isEmpty()) {
//error dude
}
else if (resultsList.size() > 1) {
//throw expections
}
else {
Login login1 = (Login) resultsList.get(0);
return login1;
}
return null;
}
我将我的数据库表密码col设置为MD5,现在如何将其恢复到此处。
答案 0 :(得分:2)
您必须散列密码并将散列作为参数传递。有点像:
String hash = hash(login.getPassword());
Object[] parameters = { login.getEmail(), hash };
有关如何实施hash(..)
方法,请参阅this question。但是,请避免使用MD5。改为使用SHA。
答案 1 :(得分:1)
我相信您需要在调用身份验证之前将L.password
转换为md5
。请参阅this useful link
import java.security.*;
..
byte[] bytesOfMessage = yourString.getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(bytesOfMessage);