[英]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.