【问题标题】:Automatic Session Refresh in Mobile App移动应用程序中的自动会话刷新
【发布时间】:2016-03-27 21:11:13
【问题描述】:

我正在寻找一种好的设计模式来刷新会话,即使它从 Web 服务器过期。

方法一:
登录系统并保存密码。在 iOS 应用程序的情况下,我可以将密码保存在钥匙串中吗?如果是这样,那么在 iOS 中这样存储的特点是什么。登录成功后,app端会收到一个token。此令牌将用于所有请求发送(移动应用程序)。如果任何请求由于会话过期而失败,我们可以编写单独的函数来根据凭证重新生成令牌。

方法2:
登录系统,服务器会生成一个令牌。令牌将在所有响应中发送给客户端,并且客户端使用旧的膨胀作为新令牌进行验证。如何设计自动会话刷新的结构。

Sree

【问题讨论】:

  • 据我所知,没有自动刷新会话。如果请求失败,您需要发送另一个请求。
  • “自动”一词的意思是我需要创建一个可以生成新令牌并使用新访问令牌重试失败请求的功能块。由于我不是网络开发人员,因此我不确定哪种方法是实现这一目标的最佳方式。

标签: ios objective-c


【解决方案1】:

最常见和最佳的做法是让您的 api 在客户端成功登录后发出会话令牌。

然后,移动客户端可以将其存储在本地(有很多存储方法)、核心数据、默认值甚至钥匙串中(可能是多余的)。

移动客户端每次向 api 发出网络请求时,都会在请求中包含会话令牌,然后服务器将更新此令牌过期时间(您可以让它过期 24 小时、1 周、1 个月, 等等)。

如果会话令牌过期,客户端应通过自动注销用户并显示登录表单来做出反应。

【讨论】:

  • 但是我不想登录表单,我必须在后台生成新令牌而不提醒用户并且需要发送失败的请求。在这种情况下,我是否应该发送客户端拥有的会话令牌。 api可以从过期的令牌中创建一个新的令牌,它会链接用户id吗?
  • 是的,如果你愿意,你可以这样做,但在某些情况下,你可能真的希望用户重新登录(比如 facebook 过期了一个令牌,你需要一个新的令牌)。您有两个选择,1 - 有一个永不过期的会话令牌,2 - 有一个过期的会话令牌,但当它过期时,客户端通过将会话令牌传递回服务器并获取一个新的来更新会话令牌。
猜你喜欢
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 2016-09-15
  • 2011-02-11
  • 2014-08-02
  • 2020-12-12
  • 1970-01-01
相关资源
最近更新 更多