0

私が抱えている問題は.equalsにあります。パスワード文字列がデータベース内のパスワードの値と等しいかどうかを確認しようとしています。サーベットにパスワード文字列があり、フォームからパスワードを取得します。ユーザー名は問題なくチェックしますが、パスワードはチェックしません

public boolean acceptCustomer(String username, String password){
CustomerTableClass customer = new CustomerTableClass();
customer.setCustomerUsername(username);
customer.setCustomerPassword(password);
Boolean check = null;
try
{
entityManager = entityManagerFactory.createEntityManager();             
CustomerTableClass customerTest = new CustomerTableClass();
customerTest = entityManager.find(customer.getClass(),username);
if (customerTest!=null)&&(password.equals(customer.getPassword()))){

check= true; 
System.out.println("User found");

}
4

3 に答える 3

1

追加のブラケットがあるようです。これを試して:

(customerTest!=null && password.equals(customer.getPassword() ) )
于 2013-03-29T23:26:45.870 に答える
0

パスワード フィールドは、おそらく何らかのハッシュでエンコードされています。ユーザーがログインフォームで渡したパスワードをハッシュし、データベースから取得したパスワードと照合する必要があります。データベースのパスワードにもソルトが含まれている場合があります。ソルトがある場合は、ユーザーから渡されたパスワードにソルトを追加してから、データベース内のパスワードと比較する必要があります。

于 2013-03-29T23:27:09.717 に答える
0

customer.getPassword() がデータベースからパスワードを取得していませんでした。.equals でパスワードを使用する前に、パスワードを見つけて取得する必要がありました。完全に機能するようになりました。コードは次のとおりです

    public boolean acceptCustomer(String username, String password){
    CustomerTableClass customer = new CustomerTableClass();
    customer.setCustomerUsername(username);
    customer.setCustomerPassword(password);
    Boolean check = null;

    try 
    {
        entityManager = entityManagerFactory.createEntityManager();             
        CustomerTableClass customerTest = new CustomerTableClass();
        customerTest = entityManager.find(customer.getClass(),username);// .find checks if username aleady exists 
        if (customerTest!=null ){// if user exists
            customer = entityManager.find(customer.getClass(), username);// retrieve user from db
            customer.getPassword();//retrieve password from db
            if (password.equals(customer.getPassword()))//if they are equal 
            {
                System.out.println("user and password correct");
                check= true;    
            }
            else
            {
                System.out.println("user and password not correct");
                check= false;
                entityManager.close();
            }
        }
        else 
        {
            System.out.print("user does not exist");
        }
    }   
于 2013-03-30T10:34:13.603 に答える