Créer un session en android

jong_ye Messages postés 22 Statut Membre -  
jong_ye Messages postés 22 Statut Membre -
bonjour tout le monde,je travaille sur une application android et plus précisément sur la page log-in qui permet à un utilisateur de se connecter et d'accéder à son compte
mon application est déjà reliée avec une base de donnée c-à-d le truc de la vérification du mot de passe et du user entré avec ceux dans la base de données par l'utilisateur se passe bien ,ce que je veux moi c'est créer une session genre même si utilisateur passe à une autre activité de l'application il reste connecte sans qu'il doit login-in encore

et merci
A voir également:

4 réponses

BunoCS Messages postés 16550 Date d'inscription   Statut Modérateur Dernière intervention   3 919
 
Hello,
Que se passe-t-il dans ton login? Tu appelles un Webservice? Si oui, que te retourne-t-il?
0
jong_ye Messages postés 22 Statut Membre
 
non j'utilise pas un Webservice ,voila mon code pour que vous puissiez comprendre

package com.example.mainviewactivity;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.R.string;
import android.net.ParseException;
import android.os.Bundle;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
EditText etUser ;
EditText etPass ;
Button bLogin ;
String username;
String password;
HttpClient httpclient ;
HttpPost httppost;
ArrayList<NameValuePair> nameValuePairs ;
HttpResponse response;
HttpEntity entity ;
String EXTRA_LOGIN="login";

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialise();
}
private void initialise()
{
etUser = (EditText) findViewById(R.id.user_email);
etPass = (EditText) findViewById(R.id.user_password);
bLogin = (Button) findViewById(R.id.connect);
bLogin.setOnClickListener(new View.OnClickListener() {


public void onClick(View v)
{
httpclient = new DefaultHttpClient();
httppost = new HttpPost("http://10.0.2.2/android_connect/index.php");
username=etUser.getText().toString();
password= etPass.getText().toString();
//URL url=new URL(LoginDisplayActivity.);

try{
nameValuePairs =new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username",username));
nameValuePairs.add(new BasicNameValuePair("password",password));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpclient.execute(httppost);
if(response.getStatusLine().getStatusCode()==200){
entity = response.getEntity();
if(entity!=null){
InputStream instream=entity.getContent();
JSONObject jsonResponse=new JSONObject(convertStreamToString(instream));
String retUser=jsonResponse.getString("username");
String retPasss=jsonResponse.getString("userpass");
// validate login
if(username.equals(retUser)&& password.equals(retPasss)){
/*SharedPreferences sp=getSharedPreferences("logindetails", 0);
SharedPreferences.Editor spedit=sp.edit();
spedit.putString("username",username);
spedit.putString("userpass",password);//may not need to store password
// close editor
spedit.commit();*/
etUser.setText("");
etPass.setText("");
Intent intent = new Intent(MainActivity.this, LoginDisplayActivity.class);
//intent.putExtra(EXTRA_LOGIN, etUser.getText().toString());
//intent.putExtra(EXTRA_PASSWORD, pass.getText().toString());
startActivity(intent);
}
else{
Toast.makeText(MainActivity.this,
R.string.champs_erronees,
Toast.LENGTH_SHORT).show();
return;
}
}
}

}catch(Exception e){
e.printStackTrace();
Toast.makeText(MainActivity.this,
R.string.champs_erronees,
Toast.LENGTH_SHORT).show();
return;
}

}//end on click

});

} //end initialise





private static String convertStreamToString(InputStream is) {

BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();

String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}





}
0
BunoCS Messages postés 16550 Date d'inscription   Statut Modérateur Dernière intervention   3 919
 
C'est du code que tu as récupéré, non? Car le stockage des infos de connexion est fait.
Quelques remarques:
- c'est plus de moyen d'envoyer des données de connexion en clair. A minima, le password devrait être encodé
- c'est encore plus moyen d'avoir, en retour JSON, les infos de connexion. Il faut plutôt renvoyer un code OK/KO
- et, comble de l'horreur, ce n'est pas à toi de vérifier les infos de connexion mais au serveur

Ce que tu dois stocker, c'est plutôt un "jeton", un cookie, un "truc" qui te dit que l'utilisateur s'est authentifié...
0
jong_ye Messages postés 22 Statut Membre
 
ok merci beaucoup pour votre aide
0