1

我想知道NSURLRequestwith .returnCacheDataElseLoad/ .returnCacheDataDontLoadcache 策略会忽略基本授权。所以下面的场景不能正常工作:

  • 在向服务器请求之前设置 URL 缓存策略以使用本地缓存
  • 使用良好的凭据提出新请求并收到成功响应
  • 切换到离线
  • 使用以前的 URL 发出请求,但授权凭据不正确
  • 观察使用不正确凭据的第二个请求是否成功

总的来说,如果应用程序中的离线模式是通过 iOS 系统缓存实现的,则此错误允许任何人登录。

有人熟悉这个问题吗?它至少发生在 iOS 10 上。我正在寻找如何以温和的方式修复它。

4

1 回答 1

1

这是预期的行为。NSURLCache 缓存仅基于 URL 本身,而不是基于请求的任何其他方面。IIRC,不考虑标题、POST 正文等。(我可能会忘记一些未被忽略的部分,但无论哪种方式,凭据都是。)

如果您想让您的应用程序支持多个用户帐户对服务器端数据具有不同的视图,您需要为每个用户使用单独的缓存,并且您需要以某种方式检查客户端的身份验证凭据。(顺便说一句,这本身可能是一个错误,因为这意味着客户端和服务器在当前密码的概念方面可能会不同步。)

于 2017-10-09T20:18:42.860 回答