Java | Login-System

Aslan1905

Mitglied
Hallo, ich bin gerade dabei ein LoginSystem zu für meine Anwendung zu realisieren.

Zum Login-System: Jeder Benutzer erhält beim Anlegen eines Benutzers einen Standardpasswort. Dieser soll beim ersten Login vom User verändert werden.

Java Klasse - Login.java:

Besitzt der User ein Standardpasswort öffnet sich ==> Hauptmenue_user_stdpw (Alle anderen
Abfragen funktionieren einwandfrei).

Java:
private void cmd_loginActionPerformed(java.awt.event.ActionEvent evt) {                                          
        
            String sql_admin = "SELECT * FROM login WHERE benutzername=? AND passwort=? AND typ='admin' ";
            
            String sql_user_standardpw = "SELECT * FROM login WHERE benutzername=? AND passwort=? AND passwort='1234' AND typ='user' ";
            
            String sql_user = "SELECT * FROM login WHERE benutzername=? AND passwort=? AND typ='user' ";
            
            
            try{
            
            String holen = null;
            
            holen = rs2.getString("Benutzername");
           
                
            pst1 = conn.prepareStatement(sql_admin);
            pst1.setString(1, txt_benutzername.getText());
            pst1.setString(2, txt_passwort.getText());
            
            rs1 = pst1.executeQuery();
                        
            
            pst2 = conn.prepareStatement(sql_user_standardpw);
            pst2.setString(1, txt_benutzername.getText());
            pst2.setString(2, txt_passwort.getText());
            
            rs2 = pst2.executeQuery();
            
            pst3 = conn.prepareStatement(sql_user);
            pst3.setString(1, txt_benutzername.getText());
            pst3.setString(2, txt_passwort.getText());
            
            rs3 = pst3.executeQuery();
            
                if(rs1.next()){
                
                    JOptionPane.showMessageDialog(null, "Die Zugangsdaten sind richtig!");
                    
                    Hauptmenue_admin admin_fenster = new Hauptmenue_admin();
                    admin_fenster.setVisible(true);
                    this.setVisible(false);
                    
                }   else if(rs2.next()) {
                    
                        JOptionPane.showMessageDialog(null, "Willkommen User! Bitte ändern Sie im nächsten Schritt Ihren Standardpasswort.");
                        
                        Hauptmenue_user_stdpw user_stdpw_fenster = new Hauptmenue_user_stdpw();
                        user_stdpw_fenster.setVisible(true);
                        this.setVisible(false);

                
                    }   else if (rs3.next()){
                        
                        JOptionPane.showMessageDialog(null, "Willkommen User!");
                        
                        Hauptmenue_user user_fenster = new Hauptmenue_user();
                        user_fenster.setVisible(true);
                        this.setVisible(false);
                                           
                        }   else {
                    
                                JOptionPane.showMessageDialog(null, "Die Zugangsdaten sind nicht richtig!\n\n"
                                + "Bei Problemen kontaktieren Sie bitte den Administrator.");
                
                            }
            
            }   catch(Exception e) {
                
                    JOptionPane.showMessageDialog(null, e);
                
                }

}


Java Klasse: Hauptmenue_user_stdpw

Nun soll in diesem Fenster das Passwort für den User verändert werden. Das Problem was ich nun habe ist: Ich habe kein Bezug mehr auf den User! Ich weiß nicht, wie ich den Wert (value_3 <== Benutzername) für die Where Bedingung herbekommen soll, da diese sich in der Klasse oben (login.java) in PRIVATE befinden.

Wie bekomme ich hier nun value_3 mit dem Benutzernamen befüllt, der sein Standardpasswort ändern möchte?

Java:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        
        
        
        try{
            // Hier wird zwei Textfelder verglichen: Neues Passwort & Neues Passwort bestätigen)
            String value_1 = txt_pass1.getText();
            String value_2 = txt_pass2.getText();
        
        
      
           
            
           
            // Hier fehlt mein value_3 ;-(
            String sql ="UPDATE login SET login.Passwort='"+value_1+"' WHERE login.Benutzername='"+value_3+"' ";
                  
            if (value_1.equals(value_2)) {
            
            pst1=conn.prepareStatement(sql);
            
            pst1.execute();
            
            JOptionPane.showMessageDialog(null, "Neues Passwort wurde gespeichert!");
            
            Hauptmenue_user user_fenster = new Hauptmenue_user();
            user_fenster.setVisible(true);
            this.setVisible(false);
            
            
            }   else {
            
                JOptionPane.showMessageDialog(null, "Die Passwörter sind nicht identisch!");
            
                }
        
        
        }   catch(Exception e) {
        
            JOptionPane.showMessageDialog(null, e);
        
            }


    
 }

Vielen Dank im Voraus! (Ist sehr wichtig für meine Bachelorarbeit).
 
Ein Standardpasswort?? Bist du des Wahninns? Damit lässt sich doch jeder neu erstellte Account sofort kapern! Erstelle eins zufällig. In PHP macht man das meist so (ist in Java nicht viel mehr aufwand):
PHP:
$password = substr(md5(microtime() . rand(1000)), 0, 8);

Des weiteren
Java:
"AND passwort = ? AND passwort = '1234'"
ist überflüssig, nimm das mit dem ? und dem erstellten Passwort.


Um an den Benutzernamen zu kommen, gib das dem Eingabe-Fenster im Konstruktor mit oder richte eine getter-methode ein.
 

Zurück
Oben