So bleiben Sie angemeldet, auch wenn der Benutzer die Kraft, beendet die app mit Ionic / Cordova?
Einem gemeinsamen Stück Funktionalität für native mobile Anwendungen ist die Möglichkeit, eingeloggt bleiben, auch wenn der Benutzer schließt die Anwendung in Frage (siehe z.B. die Facebook-app auf iOS).
Wie kann das erreicht werden, für eine Cordova /Ionic /PhoneGap-app-Authentifizierung gegen ein Rails backend via Benutzername/Passwort?
Ich bin mit dem devise_token_auth Juwel zu erleichtern Authentifizierung für Rails-ob das einen Unterschied macht.
- verwenden Sie "localStorage".Nach dem login legen Sie Benutzername und Passwort in "localStorage" und deaktivieren Sie es, wenn Sie abgemeldet sind. Wenn Sie nicht melden Sie sich und töten Sie die app, wenn Sie sich angemeldet haben, überprüfen Sie Ihre localStorage-Schlüssel-Wert leer ist oder nicht und dann navigieren Sie zu Ihrer Seite.
- Sie sollten nicht "localStorage" ... es wäre viel einfacher zu verwenden, eine WebSQL-Datenbank, weil die Verbindung zu Ihrem web-Datenbank.
- Gute Idee, aber leider WebSQL veraltet: programmers.stackexchange.com/questions/220254/...
- In meiner Erfahrung, "localStorage" nicht bleiben, um, nachdem ein Benutzer beendet eine Cordova-Anwendung auf iOS. Deine Erfahrungen anders?
- I dont think so.Auf iOS es hält immer noch die Daten nach der Tötung,wenn Sie nicht, löschen Sie die app.
- Natürlich webSQL ist veraltet. Aber es ist der beste Weg, es zu tun mit webSQL groups.google.com/forum/#!Thema/persistencejs/KYSWQ1H8hL0
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe darüber nachgedacht in letzter Zeit und ich denke, dass ich eine effektive Lösung. Ich weiß nichts über die schiene, aber die Idee sollte zu übertragen. Ich habe nur Erfahrung in Mongo für eine Datenbank, so mit mir tragen.
Jedes Gerät hat eine eindeutige Kennung, die abgerufen werden können in Cordova mit Gerät.uuid (von der Cordova-plugin) oder getUUID() (wenn Sie ngCordova). Diese id ist nur dann garantiert einzigartig für jede Plattform, obwohl es wahrscheinlich ist, einzigartig zu sein, über alle, also sollten Sie die Plattform und das Modell, um Ihre eindeutige Kennung für eine gute Maßnahme.
Nun haben wir eine wirklich eindeutige id, die wird sich nie ändern und Sie nicht haben, um mit den lokalen Speicher.
Nun stellen Sie sich vor Sie haben eine Sammlung oder eine Tabelle der Geräte in der Datenbank, die in etwa so Aussehen mit den folgenden Schlüssel-Wert-Paaren.
Nun, wenn die app startet, greifen die deviceId aus dem Gerät und senden Sie es an Ihre server zu suchen. Dies wird wahrscheinlich anders sein für Sie, nur eine einfache Schlüssel-Wert-Suche.
In Mongo das liefert ein array mit den Ergebnissen, es sollte nur ein Ergebnis sein obwohl. Nun überprüfen wir, wenn Sie vorher angemeldet sind und schnappen Sie sich die userId.
Wenn Sie wurden abgemeldet, bevor oder gab es keine Ergebnisse, nehmen Sie auf der login-Seite. Wenn Sie angemeldet sind, führen Sie das normale login-Verfahren automatisch.
Die Benutzer-id kann als eine Art Zeiger auf ein Objekt in einer anderen Sammlung.
Dies ist, wie ich glaube, ich würde es tun, alternativ können Sie das Objekt für der Benutzer die Geräte-id als Schlüssel, aber ein Nutzer kann mehrere Geräte besitzen, so würde es haben, um eine Reihe von Tasten, und ich bin mir nicht sicher, wie die Suche für das jetzt.
Das hinzufügen neuer Geräte wäre so einfach wie das hinzufügen der eindeutigen id, um die Sammlung und zeigt Sie an den Benutzer.
Jedes mal, wenn die app geöffnet wird, überprüfen Sie die Geräte-id und sehen, ob der Benutzer angemeldet ist, auf das Gerät. Sie können zeigen, wie der splash-screen, während dies geschieht.
Nun wählt der Benutzer Abmelden von Einstellungen Sie können die Datenbank aktualisieren, um zu reflektieren, dass und das nächste mal gehen Sie zu der app, die Sie werden abgemeldet.
Ich hoffe, meine Gedanken konnten von der Unterstützung sein.
BEARBEITEN:
Ich dachte, es könnte besser sein, das Gerät löschen Objekt aus der Sammlung jedes mal, wenn Sie sich ausloggen, anstatt nur die Einstellung der loggedIn, auf diese Weise, wenn Sie loszuwerden, das Gerät wird es nicht bleiben, in Ihre Sammlung. Ich bin mir nicht sicher, wie Sie Sie entfernen Objekte, die oft Auswirkungen auf die performance der Datenbank, aber die Nutzer nicht Abmelden der Geräte zu oft wie weit ich erzählen kann, so ist es sollte nicht zu viel von einem Problem.
Dies bringt einen weiteren Punkt, obwohl, verwendeten Geräte. Dies ist eine einfache Abhilfe, obwohl, jedes mal, wenn ein Benutzer anmeldet auf einem bereits vorhandenen Gerät verwenden, aktualisieren Sie die Benutzer-id-Taste, um den neuen Benutzer, wenn Sie sich geändert hat.
WEITER BEARBEITEN (da kann ich nicht kommentieren):
Auf lokalen Speicher/caching-und warum es gefährlich ist. Die einzige Sache, die Sie in den lokalen Speicher automatisch anmelden jemand automatisch sein würde, Ihre Konto-Anmeldeinformationen, die sehr vertrauliche Informationen und sollten niemals lokal gespeichert werden (Passwörter sollten nicht gespeichert werden, entweder aus der Ferne, aber hashing ist ein separates Thema). Sie würden speichern Sie niemals Ihr Kennwort im cache, könnten Sie machen einen geheimen Schlüssel, und speichern Sie es, aber alles zugänglich lokal gelesen werden können, von jemandem potenziell repliziert auf einem anderen Gerät. Die Geräte-id-Informationen, wäre sehr viel schwieriger zu fälschen.
Sorry, ich bin nicht in der Lage zu kommentieren (müssen 50 rep), aber ich denke, mit "localStorage" ist eine gültige option. Sie können erstellen Sie eine JSON Web Token (JWT) und speichern Sie im cache.
Auf Android, es sei denn, Sie explizit löschen des cache der app, indem Sie in Einstellungen, die app wird halten Sie Ihre Benutzer angemeldet sind (also nicht töten, deinen cache), auch wenn Sie Erzwingen, dass es Stoppen oder entfernen Sie es aus dem multi-tasking-Bereich. Ich bin mir nicht sicher, wie es funktioniert in iOS.
Ich empfehle dieses erstaunlich Cache-Wrapper jmdobry
Außerdem gibt es so tolle third-party-Bibliotheken, die Authentifizierung verarbeiten für Sie:
Ich hoffe, das hilft! Viel Glück.
Nicht sehr sicher, aber man könnte Cordova/JS freundlich localStorage..