我正在使用提供给我的一组私有API构建企业应用程序。不幸的是,在闲置20分钟之后,我从随后对服务器的调用中获得401未经授权的响应,直到我注销该应用程序并再次登录(或更具体地说,直到我再次使用用户名和密码调用登录API为止)。
每隔10分钟左右调用一次登录API。这似乎可行,但是很丑陋,而且似乎不那么可靠(仍然从beta测试人员那里获得有关401错误的报告)。
对于我提出的每个Web请求,我都可以检查401,然后进行适当处理并重新生成相同的请求。它可以正常工作,但是很丑陋,有很多重复的代码(为每个请求处理程序复制粘贴...),而且一般来说都是不好的样式。
使用NSURLSession的会话级质询处理程序委托方法。这会在类型为NSURLAuthenticationMethodServerTrust的初始登录API调用中接收到一个挑战,我将使用从Challenge.protectionSpace.serverTrust创建的凭据对此进行响应。这个挑战是成功的,应用程序运行良好。闲置20分钟后,下一次API调用将再次触发此委托方法。我以相同的方式响应,该方法仅被调用一次,没有Challenge.previousFailureCount或其他任何东西,因此一切似乎都很好……但是请求返回了401。
使用NSURLSession的任务级别挑战处理程序委托方法。这比会话级委托更频繁地被调用,但是它产生相同的结果。最初很好,但是在闲置20分钟后,我以同样的方式对其进行响应,并且返回401且未显示任何警告,例如,前FailureCount大于0的被召回的挑战处理程序。
从任务或会话级质询处理程序委托方法中调用登录API。这有几个问题:从会话级别的委托人,我无法得知是从登录API本身(在这种情况下,我们不希望重新调用登录API)还是从其他API调用质询(在这种情况下,我们希望如此)。也没有办法召回失败的原始NSURLRequest。从任务级别的委托人开始,它可以工作,因为我可以挂起任务,直到进行重新身份验证为止,并且仅在任务的请求不是针对登录API时才调用登录API。但是-这被称为太多-例如,在应用程序启动期间被调用了约20次。这非常丑陋且效率低下。
这是正常的吗?服务器行为是否正常,我在应如何处理此方面是否缺少某些东西?或者-服务器是否异常,是否可以向客户端建议简单的修复方法?
有没有一种干净的方法来处理iOS中的这种身份验证设置?
在我的情况下,您会怎么做?
在我的情况下,您会怎么做?
修复该死的服务器,就是这样。或者找到可以修复它并让他们修复的人。您有各种各样的解决方法,但是它们都是围绕着可以一劳永逸地解决的问题而展开的。找出谁负责服务器,并让他们修复服务器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句