首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS应用程序: 20分钟后服务器超时的身份验证。这正常吗,我怎么处理呢?

iOS应用程序: 20分钟后服务器超时的身份验证。这正常吗,我怎么处理呢?
EN

Stack Overflow用户
提问于 2014-12-17 21:02:06
回答 1查看 89关注 0票数 0

我在做什么

我正在用一组已经提供给我的私有API构建一个企业应用程序。不幸的是,在20分钟的不活动之后,我从随后对服务器的调用中得到401个未经授权的响应,直到我退出应用程序并再次登录(或者更具体地说,直到我再次用用户名和密码调用登录API )。

我试过的

  • 每隔10分钟左右调用登录API。这似乎是可行的,但它是丑陋的,而且似乎不那么可靠(仍然从测试版测试人员那里得到401个错误的报告)。
  • 对于我提出的每一个web请求,我都可以检查401,然后适当地处理并重做相同的请求。它工作得很好,但是它很难看,有很多重复的代码(每个请求处理程序的复制粘贴),而且通常都是糟糕的风格。
  • 使用NSURLSession的会话级挑战处理程序委托方法。这将在NSURLAuthenticationMethodServerTrust类型的初始登录API调用中收到一个挑战,我将使用从challenge.protectionSpace.serverTrust创建的凭据来响应该调用。这个挑战是成功的,应用程序进行得很好。在20分钟的不活动之后,下一个API调用将再次触发此委托方法。我以同样的方式响应,这个方法只调用一次,没有challenge.previousFailureCount或任何东西,所以一切似乎都很好.但是请求返回401。
  • 使用NSURLSession的任务级挑战处理程序委托方法。这会比会话级委托更频繁地被调用,但是它会产生相同的结果。一开始很好,但是在20分钟的不活动之后,我以同样的方式响应它,并且返回401时没有任何警告,例如previousFailureCount大于0的被召回的挑战处理程序。
  • 从任务级或会话级挑战处理程序委托方法中回忆登录API。这有几个问题:通过会话级别的委托,我无法判断挑战是从登录API本身调用的(在这种情况下,我们不想回忆登录API)还是从不同的API调用(在这种情况下,我们希望调用)。也没有办法回忆起失败的原始NSURLRequest。从任务级委托-它可以工作,因为我可以挂起任务,直到重新身份验证发生,并只有当任务的请求不是针对登录API调用登录API。但是--这个电话打得太多了--例如,在应用程序启动时,它被打了大约20次电话。这是相当丑陋和低效的。

我想知道的是

  • 什么是正常的?服务器行为正常吗?我应该如何处理这个问题,是不是遗漏了什么?或者-服务器是否异常,我是否可以向客户建议一个简单的解决方案?
  • 是否有一种干净的方法来处理iOS中的这种身份验证设置?
  • 在我这种情况下,你会怎么做?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-17 22:59:18

在我这种情况下,你会怎么做?

修好那该死的服务器,就是这样。或者找一个能修好它的人,让他们修好它。你有各种各样的解决办法,但它们都是围绕一个问题跳舞,这个问题可以一劳永逸地解决。找出谁负责服务器并让他们修复它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27534802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档