Ich versuche zu erstellen und Android-App, die den Benutzer authentifiziert werden muss (über einen REST-Web-Service). Die App verfügt über mehrere Aktivitäten und Bildschirme, auf denen der Benutzer angemeldet sein muss. Wenn der Benutzer angemeldet ist, kann er Beiträge auf einer Website hinzufügen und bearbeiten.Android-Authentifizierung
Ich habe gelesen, dass die Verwendung eines AndroidHttp-Clients in einem "ConnectionManager" Singleton der beste Weg wäre, dies zu tun. Aber wo würde ich die Benutzerdetails (Benutzername, Passwort) speichern, wäre das im Singleton? Sollte ich mich jedes Mal authentifizieren, wenn der Benutzer etwas bearbeiten/hinzufügen möchte?
Soll ich habe eine Klasse wie folgt aus:
public class ConnectionManager {
private static ConnectionManager instance = null;
private AndroidHttpClient client;
private ConnectionManager() {
client = AndroidHttpClient.newInstance("Android-Connection-Manager");
}
public static ConnectionManager getInstance() {
if(instance == null) {
instance = new ConnectionManager();
}
return instance;
}
public void authenticate(String username, String password) {
//Check for authentication here
}
}
und rufen Sie den Code unten jedes Mal, wenn der Benutzer etwas tut:
private static ConnectionManager conn = ConnectionManager.getInstance();
conn.authenticate();
ODER
lagere ich die Benutzer Details im Singleton
public class ConnectionManager {
private static ConnectionManager instance = null;
private AndroidHttpClient client;
private AppUser mLoggedInUser;
private boolean mAuthenticated;
private ConnectionManager() {
client = AndroidHttpClient.newInstance("Android-Connection-Manager");
}
public static ConnectionManager getInstance() {
if(instance == null) {
instance = new ConnectionManager();
}
return instance;
}
public void InitialiseUser(String username, String password) {
//Do login checks here then return true if logged in
mAuthenticated = true;
}
public boolean isAuthenticated() {
return mAuthenticated;
}
}
Das scheint Sinn zu machen, ist diese Methode sicher? Und kennen Sie Beispiele dafür? – kiwijus
Sie müssen SSL verwenden, um sicher zu sein, aber das gilt für jeden Dienst. Ich kenne keine dokumentierten Beispiele, aber es ist nicht schwer. – Kuffs
Ja, ich dachte, es wäre wahrscheinlich in Ordnung. Ich habe gerade einen kleinen Blick gehabt und es scheint sehr einfach zu sein. Es ist nur eine Frage des Hinzufügens der Kopfzeile in der Android-App (HttpGet addheader) dann überprüfen Sie es am Web-Service Ende rechts? Ich vermisse nichts, oder? – kiwijus