2015-03-10 3 views
2

У меня есть веб-сервис для создания пользовательского сеанса в основном его веб-службы входа. Этот веб-сервис в основном создает ключ сеанса, поэтому для каждого веб-сервиса, который мне нужен для доступа, мне нужно прикрепить этот идентификатор сеанса в моем заголовке, мой вопрос в том, где это хорошее место для хранения этого идентификатора сеанса, я в основном новичок в мобильной разработке, которая имеет идентификатор сеанса, а не как веб-приложения, браузер имеет файлы cookie и сеансы, но как насчет в мобильном приложении? Можно ли сохранить его в базе данных SQLite? или есть другой способ сохранить этот идентификатор сеанса? Чтобы пользователь закрыл приложение и снова открыл его, сеанс будет восстановлен.где сохранить сеанс пользователя в мобильных приложениях

Кстати, я использую xamarin для создания мобильных приложений, я на самом деле думаю, что есть хранилище, которое я могу использовать для хранения и восстановления идентификатора сеанса как в iOS, так и в Android.

Thanks

+0

Вот как сделать это в ** Xamarin на Android **: [Как использовать SharedPreferences в Xamarin.Android ?](http://stackoverflow.com/questions/26668509/how-do-i-use-sharedpreferences-in-xamarin-android). Это не будет работать на iOS. * Xamarin на самом деле не кросс-платформенный *; вам нужны специфические знания устройства при ориентации на разные ОС –

ответ

1

Я бы предложил создать приватную SharedPreferences для вашего приложения и сохранить там значение. Но тогда я также предлагаю, чтобы сессия заканчивалась так часто, чтобы, если телефон пользователя был украден, они не смогли бы войти в ваше приложение и получить информацию о том, что время истечения было достигнуто.

Чтобы сохранить общие предпочтения:

// create a String for the SharedPreferences 

private static final String PREFS = "MyAppsPrivatePrefs"; 
private static final String SESS_KEY = "Session"; 
private String session = ""; 

// then access preferences 
SharedPreferences sharedPrefs = getSharedPreferences(PREFS, Context.MODE_PRIVATE); 
// Open preferences for editting 
SharedPreferences.Editor editor = sharedPrefs.edit(); 
editor.putString(SESSION, session); 
editor.commit(); 

Это должно работать, но я снова предложил бы добавить логику, чтобы очистить это, если прошло некоторое время ...

0

Если вы используете андроида (не Xamarin), затем используйте классы SharedPreferences в android и установите сеанс пользователя и получите пользовательский сеанс. Я написал код как. Первый Создать SharedPreferences класс с именем DataStore, как

package com.example.examplesharedpreferenced.utils; 

import android.content.Context; 
import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 

public class DataStore { 

    private static final String PREF_NAME = "com.example.examplesharedpreferenced.pref"; 
    public static final String KEY_SESSION = "key_session"; 

    public static void setUserSession(Context context, String session) { 
     SharedPreferences sharedPreferences = context.getSharedPreferences(
       PREF_NAME, Context.MODE_PRIVATE); 
     Editor editor = sharedPreferences.edit(); 
     editor.putString(KEY_SESSION, session); 
     editor.commit(); 
    } 

    public static String getUserSession(Context context) { 
     SharedPreferences sharedPreferences = context.getSharedPreferences(
       PREF_NAME, Context.MODE_PRIVATE); 
     return sharedPreferences.getString(KEY_SESSION, null); 
    } 
} 

Затем используйте тезисы выше методов Основная деятельность как

package com.example.examplesharedpreferenced; 

import com.example.examplesharedpreferenced.utils.DataStore; 

import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 

public class MainActivity extends ActionBarActivity { 

    private static final String TAG = MainActivity.class.getSimpleName(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //get user session 
     String userSession = DataStore.getUserSession(MainActivity.this); 
     Log.d(TAG, "userSession : "+userSession); 

     //setting user session 
     DataStore.setUserSession(MainActivity.this, "abc345asd"); 

     //get user session after setting it. 
     String userSessionAfter = DataStore.getUserSession(MainActivity.this); 
     Log.d(TAG, "userSessionAfter : "+userSessionAfter); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 

Для Xamarin вы должны следовать link

+0

OP сказал, что использует Xamarin.Android, который использует C#, а не Java. –

+0

@ValOkafor ok Я нашел эту ссылку для SharedPreferenced в Xamarin http://stackoverflow.com/questions/26668509/how-do-i-use-sharedpreferences-in-xamarin-android Спасибо за обновление меня. –

Смежные вопросы