我有一个名为User的类,它有2个属性:login / password。我正在尝试使用hibernate标准在我的应用程序中验证用户,但我的请求不起作用。
[EDIT]返回值为NULL。我的数据库中有两个用户进行测试。
这是我的代码:
@Override
public User authenticate(String login, String password)
throws NullPointerException {
Session session = this.getSession();
User user = (User) session
.createCriteria(User.class)
.add(
Restrictions.and(
Property.forName("login").eq(login),
Property.forName("password").eq(password)
)).uniqueResult();
if (user == null){
throw new NullPointerException("User not found");
}
return user;
}
有人能告诉我我的代码有什么问题吗?
2011新年快乐!!
答案 0 :(得分:0)
您应该首先从数据库中检索用户。如果用户不存在,则在登录页面上显示一条消息。您的所有登录名都应位于unique
列中,因此无需按uniqueResult
限制。
其次,一旦你将用户拉起来,你只需比较密码哈希就可以了,让用户通过。
以上将简化您的Hibernate逻辑,从而使您的代码更容易进行故障排除。 这就是大多数网站完成它的方式。至少就我而言。