簡體   English   中英

如何使用Alamofire向每個請求添加身份驗證標頭,如果響應為401,該怎么做?

[英]How can I use Alamofire to add auth header to each request, and do something if the response is 401?

如何使用Alamofire網絡框架向每個請求添加Authorization標頭,並檢查響應是否為來自服務器的401,以便我可以相應地執行邏輯,並提供某種登錄視圖。

我是否需要創建包裝Alamofire請求的HttpService類? 還是有更多的內置方式?

為HTTP Basic Auth添加授權標頭並檢查狀態代碼非常容易:

Alamofire
  .request(...)
  .authenticate(user: "username", password: "password")
  .response { response in 
    if let status = response.response?.statusCode, status == 401 {
         // got a 401 response
    }
  }

根據您的要求,我個人更希望有一個中間類來調用Alamofire的方法。

為此,您可以在每個Web服務調用上添加auth標頭。

這是中間類的以下示例。

  • WebClient.swift

     class WebClient: SessionManager { static let sharedManager = WebClient() func responseRequest(_ url: String, method: Alamofire.HTTPMethod, parameter: Parameters? = nil, encoding: ParameterEncoding, header: HTTPHeaders? = nil, completionHandler: @escaping (DefaultDataResponse) -> Void) -> Void { self.request(url, method: method, parameters: parameter, encoding: encoding, headers: header).response { response in completionHandler(response) } } } 

您可以根據要求修改上述類,也可以在每個Web服務調用的請求方法中直接傳遞標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM