如何使用Alamofire为每个请求添加auth标头,并在响应为401时执行某些操作?

时间:2018-01-01 13:44:13

标签: ios swift alamofire

如何使用Alamofire网络框架为每个请求添加Authorization标头,并检查响应是否来自服务器401,以便我可以相应地执行逻辑,并提供某种登录视图。

我是否需要创建一种包装Alamofire请求的HttpService类?或者是否有更内置的方式?

2 个答案:

答案 0 :(得分:0)

为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
    }
  }

答案 1 :(得分:0)

根据您的要求,我个人更愿意有一个中级课程来调用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服务调用的请求方法中传递头文件。