2015-11-04 97 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

我觉得你可以

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

anfd下次登录后使用SharedPreferences

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

,您可以检查用户是否已经looged或不

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

    //LOGGED IN, DO YOUR CODE 

} 
else{ 
    //NOT LOGGED IN 
} 
相关问题