0x00背景介绍
楼主是一个iOS开发工程师,最近有一个小创意,需要服务器编程,于是从头学习,在实践的过程中遇到一些逻辑和技术的问题,虚心请教大家。由于是新手,身边也缺乏服务器厉害的伙伴,所以下面的问题有可能很幼稚。
我的服务器的编程语言Java,服务器采用的框架为Spring(IoC和MVC)+MyBatis。
创意App需要实现一个用户注册的功能,和用户之间需要相互聊天的功能。
0x01加密数据实现方案
我们所考虑的安全方案类似微信开放平台的做法:
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳 :当前时间确保在一定时间内,比如在60秒内这个请求才有效
nonce 随机数
echostr 随机字符串
问题1:我所理解的signature是一个 将token,timestamp和nonce通过sha1加密字符串,那么这个加密算法在iOS端,通过什么途经和技术进行最大程度的保密?
问题2:nonce和echostr其中有一个是用于确保请求在60秒内只处理一次,以免多次提交产生多次功能,那么他们其中的另一个是做什么的呢?
问题3:服务端要实现“确保请求在60秒内只处理一次”这种功能,有没有什么好的实现方案呢?
0x02用户注册实现方案
我们会在用户登陆成功的时候,返回一个token给用户,其作用也是用于验证后续的请求都是该登录用户发起的,这个token目前我看到两种方案。
第一种:有人说是用服务端的session的session id当做是token。
问题4:但是服务端的session是由生命周期,当session销毁了,难道要这么用户重新登陆么?如果不销毁,恐怕服务器内存会吃不消,你们是怎么考虑的?
第二种:用户登录后自己生成token,并且保存再用户表中,然后在服务器内存缓存中保存,用户近期访问的验证都在内存中完成验证,该内存缓存的生命周期由我自己控制。
问题5:这样的方案可行么?
问题6:大家有什么好的方案请提出来,让菜鸟学习下。
0x03参考文献
http://www.v2ex.com/t/166882http://mp.weixin.qq.com/wiki/4/2ccadaef44fe1e4b0322355c2312bfa8.html
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/202511
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.