Passwort prüfen bis eindeutig - while Schleife?

beta20

Top Contributor
Hallo zusammen,

ich brauche gerade einen Gedankenanstoß:
Ich möchte prüfen, ob es ein Passwort schon in der Datenbank gibt, wenn nein, dann neu erzeugen, sodass es eindeutig ist.
passwordService.generateCode() erzeugt mir einen ZufallsCode.

Hier mein bisheriger Code:
Java:
String code = passwordService.generateCode(validSign,
                    numberOfDigits);

            boolean unique = false;

            while (unique == false) {

                try {
                    findCode(code);
                }

                catch (Exception e) {
                    // Es wurde kein Code in der DB gefunden, demnach wird ein neues Objekt erzeugt in der Datenbank
                    MyObject myObject = new MyObject();
                    myObject.setCode(code);
                    unique = true;
                   
                    entityManager.persist(newDiscountCode);
                }
            }

Nun habe ich aber das Problem, dass im catch() - Block ein neues Passwort generiert wird.
Aber ich müsste doch im Catch Block dann nochmal prüfen, ob dieses neu erzeugte Passwort bereits vorhanden ist? Es kann ja sein, dass mir die passwordService.generateCode() - Methode ein Passwort generiert, das es bereits gibt....

Wie kann ich das machen?
 
Könnte mir ein Szenario vorstellen... Gibt es viele Registrierungen und oft gleiche Passwörter, könnte sich jemand unter anderem Nick anmelden (und das pw ändern).
 
Java:
String code;
boolean gleich = true;
while (gleich) {
	code = passwordService.generateCode(validSign, numberOfDigits);
	try {
		findCode(code);
	} catch {
		gleich = false;
	}
}

// Ausgabe
System.out.println(code);

// Logik
MyObject myObject = new MyObject();
myObject.setCode(code);                   
entityManager.persist(newDiscountCode);
// ...
 
Du brauchst nach keinen Duplikaten suchen, wenn du Passwoerter (korrekt) einfuegst und ausliest.

Ich rate von dieser Methode ab. Am besten benutzt du BCrypt oder aehnliches.
 

Zurück
Oben