服务器更换token,iOS做出的响应
2017-01-06 本文已影响407人
动感超人丶
背景:
写这个算是思路的一个整理。公司后台以前一直以userid来识别每个用户身份,现在服务器需要app传送cookie,通过查里面的sessionid来寻找用户,sessionid会20分钟过期,app这边需要更换token。这样做的一个好处是可以识别异地登录。那么问题也来了,想象一下,刚进入app的界面,即tabbar界面,用户在首页loading时,立即点击个人中心(网络比较慢,并且是20分钟后),此时程序发送两个请求(均和用户信息相关,暂称为1、2请求),因为请求异步发出,1请求这时返回新token,但是2请求不知道或发送时token更新不及时, 仍以老token发送,这样,服务器会再次更换token 或 认为异地登录,这样会造成异地登录的假象
我解决办法:
因为这个和网络环境,操作时机,20分钟更换token等客观环境相关,所以测试起来相当麻烦,所以我采用记录日志的方式,记录请求参数响应数据等,先分析,确定问题原因。
知道原因了,那么下一步进行解决。
思来想去,根据我的app现有框架,把afn 的 task resume方法拉到我封装的类里,即不让请求生成立即发出。这中间环节多了一步判断。用单利单独做了这件事情。因为首页只有一个请求与用户相关,所以当发送请求1时,我会记录1请求,假如2请求也同时发送,那么会先经过判断,如果1请求没有结束,那么把2请求保存并不立即发送,等到1请求持有最新token并返回最新数据时,再发送2请求以保证2请求也是用最新token发送。
存在问题:
只是举了请求1 请求2,两个请求异步发送,如果请求数量过大,只有一个一个接口去判断,并不是很智能化。如果会有好的思路,以后再尝试下