2016-10-26 17 views
3

我執行我的應用程序中,我使用Alamofire 4.0 我有一個令牌添加到每個HTTP請求我做頭的授權,我有如果響應代碼是401,則檢查每個請求,在這種情況下,我必須註銷用戶。頭授權最好Alamofire 4實踐,與全球401碼捕捉

最佳做法是什麼?有沒有簡單的方法將這種行爲添加到每個請求?

我看了一下會話管理器和請求適配器here,創建一個單例請求管理器並用它來創建請求非常簡單,但我找不到一個好方法來添加集中式驗證爲401響應代碼。 這已經是一個普遍的驗證,如果失敗,我註銷用戶,如果通過我先給處理請求對誰提出的要求。

我的期望目標是隻有一個在我的代碼地步,我檢查401錯誤代碼。

我沒有找到一個答案satisfing四處尋找 如何做到這一點有什麼建議?

+0

嗨,試圖解決同樣的問題,你找到一種方法來做到這一點? – Smugrik

+0

我按照下面的答案中的建議覆蓋了會話管理器。然後,我對401代碼進行了基本驗證。如果驗證通過,我就打電話給發出請求的人的完成處理程序 – allemattio

+0

@allemattio你可以發佈你的解決方案的一些代碼嗎?謝謝 – Giorgio

回答

0

簡單GET方法SessionManager。爲每個請求中的驗證創建一個單獨的web服務類。

let alamofireManager: SessionManager = { 
    let configuration = URLSessionConfiguration.default 
    configuration.httpMaximumConnectionsPerHost = AppConstants.maxSimultaneousDownloads 
    configuration.requestCachePolicy = .reloadIgnoringLocalCacheData 
    return SessionManager(configuration: configuration) 
    }() 


self.alamofireManager.request(UrlString) 
     .responseJSON { response in 

      print("response: \(response)") 

      guard response.result.isSuccess else { 
      //Request fails here. Trigger here to log out the user 
      return 
      } 

      if let JSON = response.result.value { 
      print("Successful") 
      //or check response code here 

      } 
     } 
+0

我不認爲這回答我的問題。我真正想要的是集中在401錯誤處理,在所有其他情況下,我想需求,任何人制造處理成功或其他故障的情況下請求(422,500,等)。你建議在每一個請求中處理401,我想避免這種情況。編輯我的問題以更好地解釋我的問題 – allemattio