我使用凭据登录服务器,凭据在request
参数内部传递,如下所示:https://server.i.connect.to/login&username=user&password=pass
。如果凭据正确,则一切正常。如果我随后将凭据更改为无效的凭据,则reponse
从dataTask返回的消息是相同的-尽管已传递的凭据无效,但我仍然可以访问。我不知道此行为是在客户端(我)端还是在服务器端触发的。另外,我不知道如何检查哪一方负责。
我试图禁用URL缓存,但是没有运气。我仍然可以使用错误的凭据登录。
let urlSessionConfig = URLSessionConfiguration.default
urlSessionConfig.requestCachePolicy = .reloadIgnoringLocalAndRemoteCacheData
urlSessionConfig.urlCache = nil
let testSession = URLSession.init(configuration: urlSessionConfig)
let task = testSession.dataTask(with: request) { data, response, error in
...
当我重新启动应用程序并首先尝试使用错误的凭据时,访问被拒绝(因此基本代码正确)。如果随后更改为正确的凭据,则将授予访问权限。回到错误的凭据,然后仍然允许访问。因此,从好到坏的凭据,只有一种方法不能按预期工作。
我也尝试过...
urlSessionConfig.requestCachePolicy = .reloadRevalidatingCacheData
...没有任何变化!
我上面与缓存相关的代码是否错误,或者这种行为的根源是什么?
答案 0 :(得分:0)
@ user3344236将我踢向正确的方向后,我设法通过(始终)先执行注销,然后再在注销.dataTask的完成代码内进行登录来解决该问题。现在看来,它可以完美运行!
我对缓存问题的假设显然是错误的。