Authentifizierung, Speicherung von Userdaten, etc.

  • 4 Antworten
  • Letztes Antwortdatum
T

toomuchcoffeeman

Ambitioniertes Mitglied
15
Hallo zusammen,

ich surfe schon seit Tagen und finde immer nur kleine Häppchen, dabei will ich - soweit mir bewusst - doch nur was grundlegendes erfahren.

Und zwar eine gangbare Art, wie eine App eine Useridentifizierung mit einem Webserver vornimmt. Läuft das genauso wie zwischen Browser und Webserver? Verbindungslos und so was ähnliches wie Sessions? Oder sind es gar Sessions?

Grundsätzlich geht es darum, dass ich über ein App einen Webservice zur Verfügung stellen möchte, der nach erfolgreicher Authentifizierung genutzt werden kann.
Wünschenswert wäre nun die LogIn-Daten abzufragen, via HttpRequest mit dem Server abzugleichen (was ja wohl auch recht einfach mittels der passenden Klassen umzusetzen ist) und dann die Services nutzen zu können. Schön wäre es auch, die Userdaten speichern zu können. Meinetwegen mit einer Checkbox und dann verschlüsselt in den sharedPreferences.

Wie auch immer. Ich finde immer nur Codeschnippsel und weiß daher nicht, ob es so funktionieren würde. Ich habe mir bereits ein Buch bestellt, das dieses Thema anschneidet. Da das aus UK kommt, dauert es aber noch ein paar Tage.

Wie würdet ihr einen App/einen Webservice umsetzen, der nur registrierte Nutzer bedient?


Beste Grüße,
Thomas
 
Äh... ja.

Iwie verstehe ich zwar nur die hälfte, aber deine letzte Frage möchte ich mal beantworten.
Du machst einfach einen Logscreen, wo man noch nichts machen kann. Außer eben Name+PW eingeben. Dann werden diese Daten, wie auch immer, an den Webserver geschickt. Dieser schaut in die DB "User vorhanden & PW korrekt"? Ja -> Rückgabewert 1 sonst 0.
In der App, wo du den rückgabewert bekommst, kannst du dann sagen "Wenn 1, starte nächste Activity. Wenn 0, error Dialog"

Gruß
 
Ja, okay, das ist ja so ähnlich wie bei Webseiten.

Und sorry, wenn ich mich ungünstig ausdrücke, ich lerne Android erst kennen, weil mir die Idee zu einer App gekommen ist und ich jetzt schauen möchte, ob und wie sich das umsetzen ließe.

Wenn die 1 (oder was auch immer) zurückgegeben wurde kann ich die Daten verschlüsselt in den Preferences speichern und beim Starten der App den User abfragen ohne, dass er es mitbekommt? (Soweit ich bisher gelesen habe, sollte das so umzusetzen sein).

Und wie schaut es mit mehreren Anfragen hintereinander aus? Die Kommunikation mit dem Server bleibt ja verbindungslos. Wie ist das Android-Äquivalent zu Sessiosn und/oder Cookies, so dass der Webserver weiß, dass es sich um einen autorisierten User handelt?
Die gleiche Frage stellt sich ja, wenn die App im Hintergrund war und wieder aktiv wird.

Im Web würde man das (z.B.) über die Gültigkeit der Sessions machen. Welche Möglichkeiten bietet da Android?

Vielen Dank schon mal und beste Grüße,
Thomas
 
Ähm, du musst mal weg kommen das ganze zu vergleichen. Das führt zu nichts!

Also, du hast quasi ein "login"-Screen in deiner App machen.
Diese startet immer, wenn du die App öffnest.
In dieser fragst du erstmal ab ob in den Preferences schon was hinterlegt ist.
Wenn etwas hinterlegt ist, vermutlich Username und PW, dann schicke dieses an den Server.
Wärend das schickt und der server prüft, schaltest du ein Dialog "Logge user ein" vor die App.
Nachdem der Server das "Ok" gibt, wird der User eingeloggt.
Eingeloggt in dem fall, dass einfach eine "neue Seite" geöffnet wird. Dabei brauchst du nichts mit Sessions oder sonst was. Denn diese "neue Seite" (in Android Activity genannt) öffnet sich ja eh nur, WENN der user am "Loginscreen" vorbei gekommen ist.
Sollte noch nichts in den Preferences hinterlegt worden sein, wird eine Login-Maske angezeigt. Hier kann der User nichts machen, außer Name und PW eingeben.
Nach eingabe wird es wieder an den Server gesendet.
Gibt dieser wieder das Ok -> Neue Activity starten.

Falls der Server einen error sendet, weil server nicht erreichbar, benutzer falsch oder sonst was, gibt die App nur ein "Konnte dich nicht einloggen" aus. Die App bleibt immernoch bei der Loginmaske hängen.
Man kommt hier einfach nicht auf die neue Activity.

Hoffe ich konnte das mal ein bisschen erklären.
Du brauchst nämlich hier nicht jedesmal prüfen "Cookie gesetzt?" oder "Session noch Aktiv?".. Das ist bei Android anders.

Gruß
 
  • Danke
Reaktionen: toomuchcoffeeman
Hey,

danke für die Info. Das hat mich echt weiter gebracht. Ich werde mir das mal ein wenig durch den Kopf gehen lassen und ob das schon des Rätsels Lösung ist.

Und Du hattest Recht. Das habe ich echt falsch vor Augen gehabt. Irgendwie ging ich davon aus, dass ich das ähnlich handhaben müsste, wie eine Client-Server-Verbindung eines Browsers.

Beste Grüße,
Thomas
 
Zurück
Oben Unten