0

我有一个网络应用程序。只有用户才能使用由不同客户端创建的用户名和密码进入应用程序。意味着具有相同用户名的用户可以使用不同的密码进入应用程序。现在我的代码返回具有相同用户名的所有用户,但只接受最高位置的用户。为剩余用户提供错误。

public User findbyUserName(String username)
        { 
        Criteria crit = getSessionFactory().getCurrentSession().createCriteria(User.class);
        crit.add( Restrictions.eq("username", username));
        List<User> list=crit.list();
        if(list!=null && list.size()>0)
             return (User)list.get(0);
        else
             return null;
            }

请帮助我。

4

1 回答 1

1

如果您有相同的用户名但使用不同的密码,您可以修改 findByUserName 以返回整个用户列表

public List<User> findbyUserName(String username)
{
    Criteria crit = getSessionFactory().getCurrentSession().createCriteria(User.class);
    crit.add(Restrictions.eq("username",username));
    return crit.list();
}

或者您可以通过用户名和密码进行搜索

public User findbyUserNameAndPassword(String username,String password)
{
    Criteria crit =getSessionFactory().getCurrentSession().createCriteria(User.class);
    crit.add(Restrictions.eq("username",username);
    crit.add(Restrictions.eq("password",password);
    try{
    return (User)crit.uniqueResult();
    }
    catch(Exception ex){
       //you have same user with same password twice
    }
}  
于 2013-07-26T08:22:37.127 回答