使用jayspt和hibernate查询数据

时间:2012-07-13 07:52:02

标签: java hibernate persistence jasypt

嘿伙计我正在使用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();
}

任何人都对此处可能发生的事情有任何意见?

1 个答案:

答案 0 :(得分:1)

您无法查询加密数据。你不应该加密,但哈希密码。您永远不应该通过密码查询。 使用Hibernate / Jasypt集成,您无需关心源代码中的加密(无“encryptor.encrypt”)。这是它背后的主要思想。