由于我们将项目更新为Swift 2和Alamofire到版本2.0,我们观察到有关基本身份验证的以下行为:当我们使用身份验证集发送请求(无论何种类型)时,请求始终在没有身份验证标头的情况下发送第一次。在后端以状态码401回答之后,alamofire添加认证头并再次重新发送请求。我们使用以下剪辑发送请求:
Alamofire.request(request).authenticate(user: Config.serviceAuthUser, password: Config.serviceAuthPassword)
有没有办法强制Alamofire在每个请求中包含身份验证标头?我们希望避免这种针对降低网络和服务器流量的每个请求的auth挑战。我们有一个适用于iOS8的解决方案,我们在Alamofires Manager的共享实例的会话配置中添加了auth头,如下所示:
Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = authHeader
但是对于iOS9,这不再起作用了,因为只返回并修改了配置对象的副本。
是否有其他方法可以避免此auth挑战过程并强制Alamofire在每个请求中包含auth标头?
答案 0 :(得分:1)
提出两个请求是Apple如何设计基础URL加载系统。 Alamofire authenticate
方法只允许您提供凭据以便在挑战发生时提供。
如果要直接提供标头,请使用headers
方法上的request
参数。此外,您可以将user:password
凭据直接插入到URL中。