4 votes

Maintien de la session utilisateur dans Android

J'essaie de créer une application de réseau social pour Android. Ma question est la suivante : comment maintenir la session de l'utilisateur lorsqu'il se connecte ?

Veuillez m'aider à trouver la solution à la question ci-dessus.

8voto

Aalok Sharma Points 652

Essayer

public class Session {
private static String sessionId;
private static String userRole;

public static void setSessionId(String sessionId) {
    Session.sessionId = sessionId;
}

public static String getSessionId() {
    return sessionId;
}

}

Utilisez cette classe et importez-la dans toutes les autres activités. Vous pouvez définir vos propres fonctions pour gérer vos données de session spécifiques.

0voto

Hades Points 2019

http://www.devahead.com/blog/2011/06/extending-the-Android-application-class-and-dealing-with-singleton/

Veuillez consulter le lien ci-dessus. Il est assez bien détaillé.

Utiliser un singleton pour maintenir la session de l'utilisateur.

0voto

Protostome Points 853

J'utilise DefaultHttpClient con HttpRequestInterceptor y HttpResponseInterceptor . Quelque chose de similaire à ceci :

public class HTTPClients {

    private static DefaultHttpClient _defaultClient;
    private static String session_id;
    private static HTTPClients _me;
    private HTTPClients() {

    }
    public static DefaultHttpClient getDefaultHttpClient(){
        if ( _defaultClient == null ) {
            _defaultClient = new DefaultHttpClient();
            _me = new HTTPClients();
            _defaultClient.addResponseInterceptor(_me.new SessionKeeper());
            _defaultClient.addRequestInterceptor(_me.new SessionAdder());
        }
        return _defaultClient;
    }

    private class SessionAdder implements HttpRequestInterceptor {

        @Override
        public void process(HttpRequest request, HttpContext context)
                throws HttpException, IOException {
            Log.d("SessionKeeper", "Adding session with the following string: " + session_id);
            if ( session_id != null ) {
                request.setHeader("Cookie", session_id);
            }
        }

    }

    private class SessionKeeper implements HttpResponseInterceptor {

        @Override
        public void process(HttpResponse response, HttpContext context)
                throws HttpException, IOException {
            Header[] headers = response.getHeaders("Set-Cookie");
            if ( headers != null && headers.length == 1 ){
                Log.d("SessionKeeper", "Keeping session with the following string: " + headers[0].getValue());
                session_id = headers[0].getValue();
            }
        }

    }
}

0voto

user3407138 Points 15

J'ai le même problème côté client Android lorsque j'essaie d'envoyer l'identifiant de session, le côté serveur crée une nouvelle session... mais vérifiez côté client Android que vous ne créez pas le DefaulthttpClient deux fois... créez le httpclient une seule fois dans l'activité principale et passez les objets dans l'autre activité ...... sans créer de second HttpClient.

0voto

Nepster Points 893

Créer une session à l'aide de SharedPreferences.

public class Session {

    private SharedPreferences prefs;

    public Session(Context cntx) {
        // TODO Auto-generated constructor stub
        prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
    }

    public void setusename(String usename) {
        prefs.edit().putString("usename", usename).commit();

    }

    public String getusename() {
        String usename = prefs.getString("usename","");
        return usename;
    }
}

Après avoir créé cette classe, lorsque vous voulez l'utiliser, créez un objet de cette classe comme suit

private Session session;//global variable 
session = new Session(cntx); //in oncreate 
//and now we set sharedpreference then use this like

session.setusename("USERNAME");
now when ever u want to get username then same work for session object and call this

session.getusename();

Bonne chance :) même chose pour le mot de passe

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X