2013-08-14 2 views
0

У меня есть приложение, которое имеет Private activities, которому разрешено иметь доступ только зарегистрированным пользователям, и Public activities, к которым у каждого мог быть доступ.Управление доступом к частной и общественной деятельности

Мне интересно, что может быть лучшим способом управления доступом к Private и Public действиям.

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

+1

Кажется разумным. Будьте предупреждены, что все, что хранится в SharePreferences, является простым текстом, поэтому любое обфускация зависит от вас. Вы также можете переопределить 'startActivity()' и выполнить свою проверку. Если он пройдет, вызовите супер, иначе сообщите об этом пользователю и попросите его войти. – Karakuri

+0

'startActivity()' звучит полезно, почему бы вам не привести пример в ответ. –

+0

Почему вы не делаете финальный класс, в котором вы сохраняете данные в sharedprefs. Этот класс не будет родителем какого-либо класса, сделав его окончательным. – jad

ответ

1

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

Хороший способ для управления состоянием входа будет LoginManager так:

public class LoginManager { 

    private static LoginManager singelton; 

    private Context context; 
    private boolean loggedIn; 

    private LoginManager(Context c) { 
     this.context = c; 
    } 


    public static LoginManager getInstance() { 
     return singelton; 
    } 

    public static void create(Context c) { 
     singelton = new LoginManager(c); 
    } 

    public boolean isLoggedIn() { 
     return loggedIn; 
    } 

    public boolean login(String name, String password) { 
     // get shared prefs and check for correct username/password 
     if(validCredentials) 
      loggedIn = true; 
     else 
      loggedIn = false; 
     return loggedIn; 

    } 

    public void logout() { 
     loggedIn = false; 
    } 

} 

На экране входа в систему или, может быть, на в Application.onCreate(), то вы можете позвонить LoginManager.create (Context с) , и после этого используйте LoginManager.getInstance(). login (имя, пароль), чтобы позволить пользователю войти в систему.

Чтобы проверить, зарегистрирован ли пользователь из любой активности, которую вы можете вызвать LoginManager.getInstance(). IsLoggedIn(), и установите соответствующие настройки активности в соответствии с этим. Например, чтобы скрыть некоторые действия, вы можете проверить, зарегистрирован ли пользователь и скрыть/показать кнопки для этих действий в зависимости от состояния входа.

+0

Метод создания должен быть недействительным, не так ли? –

+0

вы правы! отредактированный – danijoo

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