2011-01-02 5 views
1

나는 Login/Password 속성을 가진 User라는 클래스가 있습니다. 최대 절전 기준을 사용하여 내 응용 프로그램에서 사용자를 인증하려고하지만 내 요청이 작동하지 않습니다.최대 절전 기준에 대한 Noob 질문

[편집] 반환 값은 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!

+1

코드를 실행하면 어떤 결과가 발생합니까? – crnlx

+1

글쎄, 우리가 보여준 코드에서 문법적으로 잘못된 것은 아무것도 없다. 암호 조건을 제거하면 작동합니까? (즉, '로그인'으로 검색). – Alastair

+0

그래, 로그인으로 만 검색하려했지만 반환 된 사용자는 항상 null입니다. 나는 그 문제가 무엇인지 이해하지 못한다. 내 매핑은 매우 간단합니다 : 2 개의 속성 (getters와 setter를 가진 login/password). – Dimitri

답변

0

먼저 데이터베이스에서 사용자를 검색해야합니다. 사용자가 존재하지 않으면 로그인 페이지에 메시지를 표시하십시오. 모든 로그인 이름은 unique 열에 있어야하므로 uniqueResult 제한을 누를 필요가 없습니다.

두 번째로 일단 사용자를 끌어 올리면 암호 해시를 비교하고 확인을 통과하면 사용자가 통과하게됩니다.

위의 코드는 Hibernate 로직을 간소화하여 코드를 쉽게 문제 해결할 수 있도록합니다. 이것이 대부분의 사이트에서 수행 한 방법입니다. 적어도 내가 걱정하는 한.

관련 문제