1

mysql データベースを使用してログイン検証を行う Java GUI を作成しようとしています。現時点では、たとえば、最後の行からパスワードを取得しているだけだと思います

1列目 - username = user, password = 1234 2列目 -username = admin, password = 12345

これらは解決されるまで一時的なものです。パスワードをハッシュし、ユーザーが新しいアカウントを作成できるようにする予定です。

私の問題に関しては、パスワード 12345 のみを取得し、1234 は取得しないようです...ユーザー名がなくても問題ないため、ログインしたい場合は、空のユーザー名とパスワード 12345 を受け入れます。これを解決し、最後の行だけでなく、テーブル内の任意のユーザー名とパスワードを選択できるようにします。

以下は私のコードです。

4

3 に答える 3

0

あなたはこれを間違っています。一致するユーザーをデータベースで検索してパスワードの一致を自分で行う代わりに、次の方法で両方に一致するかどうかをデータベースに問い合わせる必要があります

select * from person where userid = ? and password = ?

結果行があることを確認するだけです。カウント クエリの場合もあり、結果が 1 であることを確認するだけです。

そうすれば、データベース内のパスワードをハッシュすることもできます。これは、とにかく他のセキュリティ上の理由で行う必要があります。

于 2013-10-06T09:29:29.287 に答える
-1

こんにちは ## 私はただの初心者です。私がしていることを共有したいと思います。

データベースに接続するための別のクラスを常に作成します。これにより、コードがよりきれいになります。

例を挙げて説明します

private void btn_LoginActionPerformed(java.awt.event.ActionEvent evt) {
    /*LOGIC*/ 

super.Show("Select * from Login");// this class is extending a class connect me
        try{
            int Checker = 0;// a flag 

        while(rs.next())
        {
    String user = field_UserId.getText();//values coming from field
            String pass = field_Password.getText();
    String user1 = rs.getString("User");//values coming from database
            String pass1 = rs.getString("Pass");

                if( user.equals(user1)& pass.equals(pass1))
                {      
                    //if enters into loop user is valid
                    Checker=1;//setting flag to 1

                }


          }
          if(Checker == 0  )
          {     JOptionPane.showMessageDialog(null,"Check Id&Password");
                field_UserId.setText("");
                field_Password.setText("");
          }


          }


    catch(Exception ex_connection)
 {
        System.out.println(ex_connection);


}

            /*LOGIC ENDED   */
     }

**今クラスはコネクトミー* *

    class Connectme
  {
String Name;
String Number;
ResultSet rs,r,rs1;
ResultSetMetaData md;
Statement st;
Statement st1;
int p=0;


Connectme()
{


try 
    {

        Class.forName("com.mysql.jdbc.Driver");
    Connection  con=  
          DriverManager.getConnection("jdbc:mysql://localhost:3306/Storage","root","");
        st= con.createStatement();  
        st1 = con.createStatement();

   }
catch(Exception ex_connection)
{
    System.out.println("damnnn");
    JOptionPane.showMessageDialog(null,"Check Database Connection");
}

}

void queryExecute(String insert)
{


try
{



        /*begin-to execute query ins database*/

            st.executeUpdate(insert);



        /*end-to enter values in database*/

}
catch(Exception ex_connection)
{
        System.out.println(ex_connection);


}
}


void Show(String table_name)
{

    try
{


    String insert = ("Select * from " + table_name + "");



        rs = st1.executeQuery(insert);
      md = rs.getMetaData();


}
    catch(Exception ex_connection)
{
        System.out.println(ex_connection);

        System.out.println("waah");


}

}


 void Show1(String insert1)
 { 

    try
 {



        rs1= st.executeQuery(insert1);
        /* while (rs1.next()) {
         System.out.print(rs1.getString("Price"));

         }*/


 md = rs1.getMetaData();


}
    catch(Exception ex_connection)
{
        System.out.println(ex_connection);




}

  }

 }
あなたの問題の解決策
                 String user=username_field.getText();
              PreparedStatement ps = con.prepareStatement(            
            "SELECT ID, username, password FROM person where username=user" );
于 2013-10-05T09:31:38.057 に答える