PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Paare in KWallet abspeichern



Enlighter
24-02-2006, 01:47
Hallo,

ich will paare aus Benutzernamen und Passwort in KWallet abspeichern. Jedes Paar gehört zu einer bestimmten Ressource, d.h. eigentlich will ich (Ressource, (Benutzername, Password)) abspeichern. Doch irgendwie gelingt mir das nicht und ich finde auch keinerlei Hinweise darauf, wie man Paare abspeichert.

writeMap ist leider auch keine Lösung.


QMap<QString, QString> authData;
authData.insert("user", "geheim");
wallet->writeMap( "rechner", authData );


funktioniert nicht, obwohl ich glaube, dass das schon in die richtige Richtung geht. Allerdings habe ich dann nur einen Eintrag unter Passwörter mit dem Namen "rechner" und dem Wert "geheim".

Wie geht das richtig?

Danke & viele Grüße, Michael

anda_skoa
24-02-2006, 13:24
Hmm, gute Frage, KWallet hab ich bisher nicht als Programmierer benutzt.

Wenn du sagst, daß du nach eine writeMap nur einen Eintrag "rechner" "geheim" hast, meinst du im KWallet Manager oder bei einem darauf folgendem readMap?

Ciao,
_

Enlighter
24-02-2006, 13:44
Hab's gelöst!

@anda_skoa: Ich hab nur im kwalletmanager nachgeschaut. Ich dachte mir, dass dieses Programm wohl alles richtig machen muss und ich nicht durch einen fehler beim auslesen auf einen fehler beim schreiben schliesse.

Das Problem war, dass weiter unten im Code noch ein wallet->savePassword(bla,blub); stand. Das wurde nach saveMap ausgeführt (sollte eigentlich in einen else zweig rein). Ohne das savePassword funktioniert es jetzt. Es scheint, als würde savePassword das vorherige saveMap wieder zurücknehmen. Warum auch immer.

Vorher war's so (hat nicht funkioniert) :


if ( username != QString::null ) {
/* Sometimes there is no need for a username, e.g. a passphrase for a private key. */
QMap<QString, QString> authData;
authData[ "username" ] = username;
authData[ "password" ] = password;
wallet->writeMap( ressource, authData );
}
wallet->writePassword( ressource, password );


jetzt ist's so (funkioniert):


if ( username != QString::null ) {
/* Sometimes there is no need for a username, e.g. a passphrase for a private key. */
QMap<QString, QString> authData;
authData[ "username" ] = username;
authData[ "password" ] = password;
wallet->writeMap( ressource, authData );
} else {
wallet->writePassword( ressource, password );
}


Das ganze geht auch mit authData.insert("key", "value"), d.h. authData.insert("username", username); authData.insert("password", password); liefert zwei wertepaare ab, oder authData.insert(username, password); liefert ein Wertpaar ab. Beidesmal ist der Name des Eintrags der Wert von ressource.

danke & viele Grüße,
Michael