Ich habe eine Android-App mit einem Login, der Login-Informationen über https zu einem Java-Rest API sendet, die die Anmeldeinformationen überprüft und sendet dann eine Antwort, die angibt, ob die Anmeldung erfolgreich war. Meine Frage ist einfach: Was muss ich tun, damit sich der Benutzer beim Neustart der App nicht erneut anmelden muss?Android, Login mit Rest API
Antwort
Es gibt viele Möglichkeiten, mit einmaliger Anmeldung umzugehen, es hängt viel davon ab, wie die Architektur auf der Serverseite implementiert wird, damit es funktioniert. Normalerweise sind Login-API closely coupled
aus Sicherheitsgründen. Lass mich zum Beispiel was ich meine von closely coupled
.
Wie Sie einmal um Mobile App
Arbeit Login
wollen und das nächste Mal Benutzer öffnet die Mobile app
Sie wollen nicht wieder mit SignIn
Bildschirm Benutzer aufzufordern. und sicherlich möchten Sie nicht die vertraulichen Informationen wie Username
und Password
auf Mobile App als persistente Daten speichern, wie es leicht von Android-Gerät abgerufen werden kann. also was du tust.
Nehmen wir an, Sie übergeben Anmeldeinformationen mit einer deviceID
eindeutig an die Android Device
. Etwas wie unten gezeigt. finden Sie die JSON
Daten an die
{
"username": "[email protected]",
"password": "it's not a secret",
"deviceId": "123456789"
}
LoginAPI
Nun, wie Sie die Login
Anmeldeinformationen speichern möchten gesendet nicht tun, werden Server einen zufälligen alphanumerischen String
Pass es Ihnen in Reaktion erzeugen jedes Mal, wenn Sie auf dem Mobile anmelden App.
{
"Success": true,
"SuccessMessage": "credentials are correct, really!",
"ErrorMessage": null,
"Date": "dd/mm/yyyy",
"token": "1eghe4qha23aehraeh456789" // now this is a nasty String
}
Sie können jetzt die date
und die token
in Mobile App als persistente Daten speichern. Wenn der Benutzer das nächste Mal die App öffnet, können Sie den Benutzer den Bildschirm SignIn
umgehen lassen, und im Hintergrund können Sie überprüfen, ob die Benutzer-Token-ID korrekt ist, indem Sie diese an den Server senden.Sie können SharedPreferences oder erstellen Sie wählen eine file und es
{
"API_TYPE": "login",
"deviceId": "123456789",
"token": "1eghe4qha23aehraeh456789"
}
Server dieses Token-ID überprüfen gegen die deviceID
zu überprüfen, ob dies der richtige Token für das Gerät und reagieren war.
Sie können fragen, warum überprüfen wir wieder die token
, wie dies vom Server an erster Stelle mit der Angabe der Anmeldeinformationen richtig gesendet wurde. Ich stimme zu, dass Sie einen Punkt haben, sagen wir, es ist eine ausfallsichere Bedingung, wenn der Benutzer das Passwort von der Website ändert oder etwas, das das Token auf dem Server ändert, ändert, wenn der Server das Token verweigert Sie bitten den Benutzer, sich erneut anzumelden.
Dadurch wird sichergestellt, dass ein Benutzer zu einem beliebigen Zeitpunkt in nur einem Android Device
angemeldet ist.
Danke für Ihre Hilfe, dies scheint der beste Ansatz zu sein, den ich gesehen habe. Ich habe eine Frage dazu, ist es nicht schlecht, einen Token zu lange auf einem Gerät zu speichern? Würden Sie den folgenden Ansatz immer dann empfehlen, wenn der Benutzer nach der ersten Anmeldung wieder zur App zurückkehrt: 1. Der Benutzer öffnet die App. Der Token und die Geräte-ID in den gemeinsamen Einstellungen werden an den Server 2 gesendet Der Server verifiziert die Geräte-ID und Token-ID mit der Geräte-ID und der Token-ID, die auf dem Server gespeichert sind ... –
3. Der Server erzeugt dann ein neues Token und wenn Schritt 2 erfolgreich war, sendet er ein neues Token mit Die Erfolgsmeldung 4. Die Token-ID wird dann in den gemeinsamen Einstellungen mit der neuen vom Server erhaltenen aktualisiert. Wäre das übertrieben? Würden Sie auch empfehlen, den Token-Check über SSL durchzuführen? –
@BenC, Sie haben meine Aufmerksamkeit, die Sie tatsächlich einige der Schleifenlöcher in diesem Ansatz gefunden haben. Was Sie vorgeschlagen haben ist trotzig kann getan werden und tut auch die "SSL" -Option. Denken Sie daran, dass ich einen "Date" -Schlüssel hinzugefügt habe, der vom Server als Antwort zur Verfügung gestellt wird. Dieses Datum kann verwendet werden, um zu überprüfen, wann das "SignIn" das letzte Mal erfolgreich stattgefunden hat, und Sie können das Token nach 10, 20 oder 30 Tagen ungültig machen und den Benutzer erneut zum SignIn bitten –
Sie können die Anmeldeinformationen nach der ersten Anmeldung speichern. Also wenn der Benutzer App neu starten, können Sie automatisch die Anfrage Authentifizierung.
können Sie wählten die beste Option, um Speicher die Anmeldeinformationen des doc mit: Data-Storage
Diese einfache, aber vielleicht nicht der beste Weg, dies zu tun.
Wenn Sie in Ihrer Authentifikation Kennwörter verwenden, denken Sie daran, vor dem Speichern zu verschlüsseln. – Adley
Ich habe das gleiche problme, und ich bekam einen Json Daten vom Server wie dieser
{"error":0,"message":"ok","token":"7c75015e92e40511911e34752ee456e1","execute_time":"0.2723"}
so halte ich die StuToken
in SharedPreferences, und wenn meine app starten, klicken Sie die StuToken
es nicht gibt, wie dieses
Map<String, String> loginInfo = InfoUtil.getLoginInfo(MainActivity.this);
if (loginInfo != null) {
if (loginInfo.get("StuToken") != null) {
getStuInfo(loginInfo.get("StuToken"));
Toast.makeText(MainActivity.this, "登录状态", Toast.LENGTH_SHORT).show();
} else {
initIntent(LoginActivity.class);
this.finish();
}
} else {
initIntent(LoginActivity.class);
this.finish();
}
}
hofft, dass das für Sie arbeitet
können Ihnen gemeinsame Vorliebe verwenden, um die Werte des Benutzers zu speichern und zu prüfen, ob der Benutzer bereits angemeldet ist oder nicht. Sie können dies folgen Link.
Probieren Sie diesen Code in Ihrer SplashScreen-Aktivität aus. Sie können einen Wert in einem sharedPrefence speichern, um zu überprüfen, ob der Benutzer angemeldet ist oder nicht.
public class SplashActivity extends AppCompatActivity {
private static final long TIME_OUT_MILI = 3000;
private SharedPreferences mAppPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
mAppPreferences = AppUtil.getAppPreferences(this);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (mAppPreferences.getBoolean("is_Logged_in", false)) {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
} else {
startActivity(new Intent(SplashActivity.this, LoginActivity.class));
}
finish();
}
}, TIME_OUT_MILI);
}
}
In Your LoginActivity ist dies zu tun:
public class LoginActivity extends AppCompatActivity {
private SharedPreferences mAppPreferences;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
SharedPreferences.Editor editor = mAppPreferences.edit();
editor.putBoolean(Constants.SETTINGS_IS_LOGGED_IN, true);
editor.commit();
}
}
- 1. Login facebook in Android mit REST API
- 2. Wordpress Rest API Login
- 3. Login zu Drupal in Android mit Rest API
- 4. Facebook Login Für Rest Api
- 5. Rubin auf Schienen Rest api mit Rubin für Login-Seite
- 6. Symfony 2.1 REST API Login überall
- 7. Akzeptiere Facebook Login in meine REST API
- 8. Android DefaultHttpClient REST api
- 9. Wie erstelle ich eine Login-API mit Django Rest Framework?
- 10. Ruby-Skript mit curl von Rest-API (Login)
- 11. Wie kann ich SessionAuthentication verwenden, um eine Login-Rest-API mit Django Rest Framework zu erstellen?
- 12. Android Volley Fehleranforderungscode 415 mit Rest API?
- 13. Outlook API Android Dienst Rest
- 14. django-rest-auth: social login mit google
- 15. Android App mit Rest api php codegniter Admin-Panel
- 16. Login mit API. yii2
- 17. Infusionsoft REST API mit Salesforce
- 18. REST API mit CodeIgniter
- 19. Zusammenfassende REST (JSON) API mit WCF
- 20. REST-API und nicht-REST-API
- 21. Java-REST-Client-API für Android
- 22. Login via Facebook in OpenAM mit REST
- 23. Anruf Rest-API von Java Rest API
- 24. woocommerce Rest API OAuth Authentifizierung in Android
- 25. REST API zusammen mit Websocket API
- 26. Authentifizierung von Android Gerät gegen Spring Security Rest API
- 27. REST-Client, der mit Login über OAUTH umgehen kann
- 28. REST Api-Implementierung mit Spring
- 29. TeamCity-Testfehlerstatistik mit REST-API
- 30. REST API-Authentifizierung mit SAML
Sie Ihre API einen Auth Schlüssel liefern machen können, die Sie verwenden können Benutzer für zukünftige API-Anforderungen zu authentifizieren. Sie können auch die Gültigkeit dieses Auth-Tokens festlegen. Weitere Informationen finden Sie im JSON-Webtoken. –