2012-12-12 160 views
3

我已經開始致力於開發利用基於REST的Web服務(使用restEASY在Java中實現)的iOS應用程序的概念證明。我將使用RestKit作爲我的客戶端服務庫,並且一直在閱讀文檔和一些示例。RestKit - 處理身份驗證

絕大多數服務都要求用戶使用用戶名和密碼進行身份驗證。我們有認證服務,可以接受包含憑證的JSON對象,因此這部分很容易。我的問題是,當服務說需要身份驗證時,我們如何處理iOS部分?

想象一下這個場景......

用戶啓動了我們的應用程序,其識別出用戶需要進行身份驗證。模式視圖控制器彈出,提示用戶進行認證,並提交請求。用戶然後可以進行一堆REST調用而沒有任何問題。最終,他們關閉手機(應用程序仍處於活動狀態),並在稍後一小時左右回覆。他們點擊一個按鈕來觸發另一個REST呼叫,但是此時服務器端會話已過期。

理想情況下,我們希望能夠識別出服務器已指示需要驗證,並再次彈出模態視圖控制器。但是,RestKit是否支持這個?有沒有辦法讓我們註冊一個能夠識別服務器以這種方式響應的「全局響應處理程序」?

我們可以用JSON返回狀態碼或使用HTTP狀態碼。我們的服務具有靈活性。真正的問題是如何以理想的方式在客戶端處理這個問題。而且,一旦我們對用戶進行了重新認證,是否有任何方法可以重播他們最初嘗試提交的請求?或者,他們是否必須再次開始行動?

對不起,如果這沒有意義,或者如果這是一個非常簡單的問題來解決。由於我剛剛開始使用RestKit,我想確保我以正確的方式避免未來的問題。任何建議,代碼示例,教程等,你可以提供將非常感激。

回答

3

我會建議你做你的AppDelegate到服務器的請求 - (void)applicationDidBecomeActive:(UIApplication *)application- (void)applicationWillEnterForeground:(UIApplication *)application方法發送舊認證令牌。如果令牌有效或無效,服務器可以提供響應。 如果你的AppDelegate採用RKObjectLoaderDelegate協議,那麼它可以處理響應。這樣,只要應用程序變爲活動狀態,就會提示用戶在必要時重新進行身份驗證。