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

问题描述 投票:0回答:2

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

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

ios swift alamofire
2个回答
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服务调用的请求方法中传递头。


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
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.