作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用凭据登录服务器,这些凭据在 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
...没有任何变化!
上面我的缓存相关代码是否错误,或者此行为的根源是什么?
最佳答案
在 @user3344236 把我踢向正确的方向后,我设法通过(总是)首先在注销.dataTask 的完成代码中执行登录之前执行注销来解决问题。现在看来这一切都很完美!
我对缓存问题的假设显然是错误的。
关于swift - 初始成功身份验证后,可能会使用错误的凭据访问服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56901595/
java.lang.Throwable 的哪些子类可能被空语句抛出? 通过短语“空语句”,我指的是“无”、“分号”和“分号”: // .... A(); B(); C(); try { //
我是一名优秀的程序员,十分优秀!