2015-06-13 2 views
0

Я хотел бы запретить доступ к активности, скажем, деятельности по редактированию профиля пользователя, если пользователь еще не выполнил вход с запросом REST на сервер.Запретить доступ к активности при входе пользователя

На данный момент, после того как пользователь успешно вошел в систему, он хранится локально в настройках телефона.

protected void onPostExecute(ResponseEntity<User> responseEntity) { 
    HttpHeaders headers = responseEntity.getHeaders(); 
    if (null != headers) { 
     List<String> values = headers.get(Constants.LOGGED_IN_USER_AUTH_TOKEN); 
     if (null != values && values.size() > 0) { 
      String token = values.get(0); 
      if (null != token) { 
       loginActivity.storeUser(responseEntity.getBody(), token); 
      } 
     } 
    } 
} 

public void storeUser(User user, String token) { 
    if (null != user) { 
     SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString(Constants.LOGGED_IN_USER_EMAIL, user.getEmail()); 
     editor.putString(Constants.LOGGED_IN_USER_JWT, token); 
     editor.apply(); 
     Intent intent = new Intent(getApplicationContext(), UserProfileActivity.class); 
     startActivity(intent); 
    } 
} 

Мне интересно, как запретить доступ к деятельности по редактированию профиля.

Вот как я получить сохраненный адрес электронной почты от предпочтений:

private boolean getProfile() { 
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    String email = settings.getString(Constants.LOGGED_IN_USER_EMAIL, null); 
    String token = settings.getString(Constants.LOGGED_IN_USER_JWT, null); 
    new UserProfileAsyncTask(this, email, token).execute(); 
    return false; 
} 

Любые намеки на стратегии принять приветствуются.

ответ

0

Внутри метода onCreate() вашего профиля. Редактируйте активность, проверьте, не вошел ли пользователь в систему. Если пользователь не вошел в систему, а затем просто перенаправляет их обратно в активность входа с использованием намерения.

+0

Это означает, что я должен добавить эту проверку в каждое действие, которое требует, чтобы пользователь вошел в систему. Любая стратегия о том, как реализовать это один раз для нескольких действий? – Stephane

+0

Я не думаю, что есть другой способ сделать это. Так мы и делаем вещи в веб-приложениях. Кроме того, это простая проверка if-else. –