# SharedPreferences für User-Session



## jemand (8. Sep 2020)

Man kann ja die SharedPreferences in einer Android-App nutzen, um nach einem Login den Nutzernamen in einer Datei zu speichern, sodass man bei den weiteren Activities und nach einem Neustart der App sich nicht erneut anmelden muss.

Aber was genau soll man in diese Datei hinterlegen? Nur den Nutzernamen? Aber das kann man doch nicht tun. Da kann man ja den Nutzernamen in der Datei ändern und sich einfach als jemand Anderes ausgeben. Das Passwort möchte man natürlich auch nicht im Klartext dort abspeichern.


----------



## kneitzel (8. Sep 2020)

Mir ist das Szenario jetzt erst einmal nicht bekannt, das Du abdecken willst.

Generell bist Du auf einem Android System mit einem User unterwegs. Damit speichert Deine App Daten, die der Benutzer eingegeben hat. Dies kann er natürlich auch jederzeit ändern. Die Änderung eines gespeicherten Wertes ist ja erst einmal rein lokal auf dem Gerät. Und der Anwender kann da ja angeben, was er will.

Ein Login selbst erfolgt ja auf einem anderen System. Wenn der Benutzer sich authentifiziert gegenüber einem Dritten, dann kannst Du das natürlich auch speichern. Eine Änderung der Daten sorgt aber dann dafür, dass die Authentifizierung beim nächsten Mal nicht mehr klappt. Also spielen wir das einmal durch: Meine App macht ein Login hier am Forum. "JustNobody" als User mit meinem Passwort wird dann gespeichert. Wenn ich jetzt in der Datei "JustNobody" durch "jemand" ersetze, werde ich nicht hier im Forum zu Dir, sondern beim nächsten Zugriff wird der Zugriff fehlschlagen (So wir nicht durch Zufall das gleiche Passwort haben).

Generell ist das Speichern von Passwörtern aber eine ganz schlechte Praxis. Man kann sich da mal anschauen, wie das Identity Systeme machen (Also z.B. Anmeldung über Google, Facebook, FireBase, .....). Bei Facebook und Google ist es z.B so, dass die Authentifizierung direkt an den Servern erfolgt und Deine App Login/Passwort nicht einmal mitbekommt. Die leiten also dein Request an eine URL weiter und wenn die Authentifizierung (Nutzer hat sich angemeldet) und Autorisierung (Nutzer hat Zugriff gestattet) dann erfolgreich war, dann wird sozusagen ein Token gespeichert und die App meldet sich dann nur noch mit eigener App-Id und dem vergebenen Token an.

Aber da hängt es generell davon ab, was genau Du machen willst. Dann kann man überlegen, was da vielleicht Sinn macht oder nicht. Wenn es um die Authentifizierung geht, dann ist evtl. auch Smart Lock interessent: https://developer.android.com/distribute/best-practices/develop/smart-lock-for-passwords


----------



## jemand (8. Sep 2020)

JustNobody hat gesagt.:


> Mir ist das Szenario jetzt erst einmal nicht bekannt, das Du abdecken willst.
> 
> Generell bist Du auf einem Android System mit einem User unterwegs. Damit speichert Deine App Daten, die der Benutzer eingegeben hat. Dies kann er natürlich auch jederzeit ändern. Die Änderung eines gespeicherten Wertes ist ja erst einmal rein lokal auf dem Gerät. Und der Anwender kann da ja angeben, was er will.
> 
> ...


Danke für die Antwort. Hat geholfen


----------

