2015-11-04 2 views
0

У моего приложения есть некоторые события onClick(), некоторые из которых требуют логина для отправки запроса.Проверьте, чтобы во время входа в систему перед выполнением действий

Как я должен обрабатывать то, что происходит, если кто-то нажимает на то, что требует от них входа в систему для того, чтобы действие произошло?

У меня есть следующий класс Дооснащаемый:

public class RestClient { 

    private static ApiEndpointInterface apiService; 
    private static String API_URL = "http://www.website.com/api"; 

    private RestClient() { 
     RestAdapter restAdapter = new RestAdapter.Builder() 
       .setEndpoint(API_URL) 
       .setRequestInterceptor(new SessionRequestInterceptor()) 
       .build(); 

     apiService = restAdapter.create(ApiEndpointInterface.class); 
    } 

    public static ApiEndpointInterface getApiService() { 
     return apiService; 
    } 

    public class SessionRequestInterceptor implements RequestInterceptor { 
     @Override 
     public void intercept(RequestFacade request) { 
      request.addHeader("Accept", "application/json"); 
      if (PreferenceUtils.isLoggedIn()) { 
       request.addHeader("Authorization", PreferenceUtils.getTokenId() + ":" + PreferenceUtils.getTokenKey()); 
      } 
     } 
    } 
} 

И это называется в другом месте, как это:

RestClient.getApiService().getUser(new Callback<UserData>() { 
    @Override 
    public void success(UserData json, Response response) { 

    } 

    @Override 
    public void failure(RetrofitError retrofitError) { 

    } 
}); 

Как вы можете видеть, перехватчик добавляет Authorization заголовок, если они вошли в систему, но следует ли мне запретить делать вызов вообще, если они не вошли в систему? Как мне это реализовать?

ответ

0

Я думаю, что вы можете использовать SharedPreferences

SharedPreferences sp=getSharedPreferences("some_name",MODE_PRIVATE); 

после входа

sp.edit().putBoolean("logged", true).commit(); 

anfd в следующий раз вы можете проверить, если пользователь уже looged или нет

if (sp.getBoolean("logged", false)) { 

    //LOGGED IN, DO YOUR CODE 

} 
else{ 
    //NOT LOGGED IN 
} 
Смежные вопросы