初始成功认证后,可以使用错误的凭据访问服务器

时间:2019-07-05 10:49:29

标签: swift authentication nsurlcache

我使用凭据登录服务器,凭据在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

...没有任何变化!

我上面与缓存相关的代码是否错误,或者这种行为的根源是什么?

1 个答案:

答案 0 :(得分:0)

@ user3344236将我踢向正确的方向后,我设法通过(始终)先执行注销,然后再在注销.dataTask的完成代码内进行登录来解决该问题。现在看来,它可以完美运行!

我对缓存问题的假设显然是错误的。