我的应用程序使用典型的身份验证方案,其中用户使用他的凭据登录服务器,服务器返回一个身份验证令牌,然后本地存储在客户端 (iPhone) 上。
现在,存储的身份验证令牌不太可能但可能会随着时间的推移而变得无效。由于使用该无效令牌发出的每个请求都会失败,因此我想在第一次发生该故障时通过“将用户注销”来处理该故障。注意:该请求可能在后台线程中发出,因为应用程序会定期与服务器同步。
退出意味着:
- 删除本地存储的令牌
- 删除用户存储的所有其他内容(在 Sqlite 中)
- 将用户“重定向”到登录控制器
因此,用户可能正在查看应用程序中的某些内容,而令牌变得无效并且退出过程开始了。
由于所有内容都被删除(#2),向她展示登录控制器是不够的,因为在登录并关闭该控制器之后,以前的内容不再存在。
为了防止这种副作用,我想完全删除层次结构中的所有视图控制器,无论触发注销时有多深。
所以我的问题是:
在呈现登录控制器之前“杀死”所有活动控制器的最佳方法是什么?