嘿伙计我正在使用Hibernate将用户模型存储在数据库中,很好地发现你可以使用jayspt串联来抽象用户名和密码的加密远离业务逻辑。这是一个描述我的意思的link。这是来自hibernate站点的另一个link。现在我可以很好地存储数据。它是加密的。我可以阅读它,很酷,但当我尝试查询事情成为问题。我也不确定发生了什么事。我首先尝试使用未加密的字符串进行查询。我有一个空指针。我查询了加密字符串。我有一个空指针,所以我对发生的事情感到有些困惑。这是查询:
public String getUserId(String email, String password) {
String encryptedPass = encryptor.encrypt(password);
String encryptedEMail = encryptor.encrypt(email);
Session sess = manager.getSession();
Criteria crit = sess.createCriteria(MobsterUser.class);
crit.add(Restrictions.eq("email", encryptedEMail )).add(Restrictions.eq("password", encryptedPass));
MobsterUser user = (MobsterUser) crit.uniqueResult();
sess.flush();
return user.getUserId();
}
任何人都对此处可能发生的事情有任何意见?
答案 0 :(得分:1)
您无法查询加密数据。你不应该加密,但哈希密码。您永远不应该通过密码查询。 使用Hibernate / Jasypt集成,您无需关心源代码中的加密(无“encryptor.encrypt”)。这是它背后的主要思想。