V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xx314327475
V2EX  ›  问与答

iOS 开发者初学服务端,有几个小问题虚心请教各位同学,望无情鞭笞~

  •  
  •   xx314327475 · 2015-07-01 15:59:57 +08:00 · 1713 次点击
    这是一个创建于 3418 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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/166882
    http://mp.weixin.qq.com/wiki/4/2ccadaef44fe1e4b0322355c2312bfa8.html
    4 条回复    2015-07-02 12:48:41 +08:00
    SHIMLY
        1
    SHIMLY  
       2015-07-01 18:08:02 +08:00   ❤️ 1
    估计大神看了你帖子 都不屑回复。就让我这个小菜鸟来试试
    我也是搞ios的 服务器是用PHP写。
    问题一 signature 不一定是sha1加密的 像腾讯这种大公司 估计内部有自己的加密算法。至于"那么这个加密算法在iOS端,通过什么途经和技术进行最大程度的保密? "没明白 是啥意思
    问题二 问题三 没看懂

    token 一般我都是 根据用户登录时候的 用户名、密码、时间戳、有时候也有经纬度 加密 生成一个token。

    服务器端 也不是特别懂。答案仅供参考。
    hdbean
        2
    hdbean  
       2015-07-02 09:25:09 +08:00   ❤️ 1
    现在好多APP都是三方授权登陆,没有自己的一套用户系统
    xx314327475
        3
    xx314327475  
    OP
       2015-07-02 12:48:27 +08:00
    @hdbean 我是想自己做这么一套用户系统,感谢回复
    xx314327475
        4
    xx314327475  
    OP
       2015-07-02 12:48:41 +08:00
    @SHIMLY 感谢回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1202 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:19 · PVG 02:19 · LAX 10:19 · JFK 13:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.