jPasswordField problem

MichaelKl

Mitglied
Der Code:
Java:
System.out.println(jPasswordField.getPassword().toString());
ergibt: [C@1f20eeb

wollte eigentlich ein passwort abgleichen....aber das if hat nie erfolg....

Java:
User tmpUser = new User(jTextField.getText(), jPasswordField.getPassword().toString());
legt mir einen temporären Benutzer an, der die Werte der Eingbe maske hat.
Könnte hier bei der .toString Methode der Fehler liegen ?
und eine Methode userAvailable
Java:
if (myAuth.userAvailable(tmpUser)== true){
						System.out.println("Benutzer vorhanden!");
}
prüft ober der benutzer bereits vorhanden ist.
 
Du solltest nie, und wirklich nie ein Passwort plaintext als String speichern. Warum dass das so ist? Google liefert viele Antworten darauf, da will ich mich nicht wiederholen. Auf alle Fälle eine Frage der Sicherheit. Mach aus dem zu überprüfenden Passwort ebenfalls ein [c]char[][/c].
 
[c]new String(jPasswordField.getPassword());[/c] wurde schon probiert? Schliesslich gibt [c]getPassword();[/c] ja [c]char[][/c] zurück 😉.
@Edit: ...und äh... ja ja... die Sicherheit...
@Edit2: Bei erneuter überlegung wäre eigentlich auch [c]String.valueOf(jPasswordField.getPassword());[/c] um einiges eleganter. Von wegen Stringpool und so...
 
Zuletzt bearbeitet von einem Moderator:
ich glaube getPassword gibt ein Char[] zurück. Die toString Methode von Byte[] liefert dann nur die Adresse. Du musst
new String(jPasswordField.getPassword()) machen.

Mist war jemand schneller 😉
 
der fehler liegt in dieser Methode
Java:
public boolean userAvailable(User user){
		boolean available = false;
		User operator = new User();
				for (int i = 0; i < operator.getAllUser().size(); i++){
					if(operator.getAllUser().get(i).getName().equals(user.getName())){
						available = true;
					}
				}
		return available;
	}
kann mir jemand helfen, was da falsch läuft...?
 
gute Frage, aber macht für die funktionalität kein Unterschied....meine Wissens jedenfalls

funktioniert die abfrage mit
Java:
... getPasswort().toString
oder könnte hier der Fehler liegen...
die Ausgabe sieht immerhin sehr kryptisch aus : [C@107077e

So funktioniert es leider auch nicht:
Java:
	public boolean userAvailable(User user) {
		boolean available = false;
		User operator = new User();
		if (operator.getAllUser().contains(user)){
			available = true;
		}
		return available;
	}
 
Zuletzt bearbeitet:
Lass doch das
Code:
toString()
weg.
Code:
getPassword()
liefert Dir ein char-Array.
Vgl.
Java:
char[] c= {'a', 'b', 'c'};
System.out.println(c.toString());
System.out.println(c);
 
die Methode soll ja prüfen ob der Benutzer vorhanden ist, und dies anhand von dem Benutzername.
Wenn das der Fall ist, soll sie true zurückgeben...
 
@Michael
da muss aber noch z.b. ein
Code:
Arrays.toString(...)
drumherum, sonst machts keinen Unterschied (println ruft ja selber toString auf das Object auf...)
 
@Schandro: Ich kenne die Implementierung nicht, aber beii mir ist
Code:
println(char[] c);
so schlau
@MichaelKl:
char-Arrays könnte man so mit einem String vergleichen:
Java:
System.out.println(String.valueOf(c).equals("abc"));
 
nebenbei ... die Funktion funktioniert nicht wegen dem Array Problem sondern aus anderen Gründen...

ich frag ja das pw gar nicht ab...
?? Hab Dich jetzt nicht verstanden ??
In dem oben geposteten Code steht doch in zwei von fünf Zeilen
Code:
jPasswordField.getPassword().toString(
und das was da rauskommt ist sicher nicht das was Du willst.
getText() würde funktionieren - ist aber deprecated
 
Wenn das PW nicht relevant ist, sollte [c]userAvailable()[/c] bereits funktionieren. Ich würd's aber ein wenig anders schreiben:
Java:
public boolean userAvailable(User user) {
  String name = user.getName();
  Collection<User> users = new ArrayList<User>(operator.getAllUser());
  for(User user : users) {
    if(name.equals(user.getName()) {
      return true;
    }
  }
  return false;
}
 

Zurück
Oben