V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
simman
V2EX  ›  程序员

服务端怎么做移动 App 的登录信息

  •  
  •   simman · 2015-03-28 00:11:50 +08:00 · 2630 次点击
    这是一个创建于 3529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请问大家都是怎么在服务端判断来路用户是否已经登录了?

    1、用Session的话,有可能会造成Session丢失,就算存数据库的话(或memcache redis),那么也会有过期时间,如果在时间内没登陆还是会丢,总不能设置太长吧??

    2、应用端登录成功以后,服务器返回session,然后每次客户端携带过去?这样的话只要是能抓到这个接口,岂不是可以随便搞了?还是我没理解 session/cookie?

    3、等你来答。

    先谢谢各位~

    12 条回复    2015-04-08 11:58:05 +08:00
    stackpop
        1
    stackpop  
       2015-03-28 00:18:23 +08:00
    2. 可以使用 https, 同时对整个请求的 body 使用公钥加密即可。 如果是明文传输,没有办法的,获取了 session 是可以随便搞的,运营商分分钟往你的网站里面插播广告。
    sumhat
        2
    sumhat  
       2015-03-28 00:21:16 +08:00
    把用户登录的信息使用不可逆的算法加密一下,存在 cookie 里,每次判断 cookie 的值即可
    GhostFlying
        3
    GhostFlying  
       2015-03-28 00:48:49 +08:00 via Android
    不是每次请求带 token么?要保证这部分不外泄就只有加密连接了
    simman
        4
    simman  
    OP
       2015-03-28 00:54:25 +08:00
    @stackpop 如果支持 IOS、Android的话,需要购买什么样的证书?大概需要多少钱/年? 如果使用 https以后,通过抓包软件会抓到什么样的数据呢?
    incompatible
        5
    incompatible  
       2015-03-28 00:59:28 +08:00
    1. 不一定非得用http session啊。每个用户登录时,随机生成一个unique的token,把它返回给客户端、以及与user_id一块扔到redis里。以后客户端每次请求都带上token,服务端便能从redis中获取该用户的信息

    2. 把客户端与服务器端通信加密可以解决你的问题。
    没必要用https啊。app是你自己的,所以自己生成公钥私钥,把公钥打包在app里就好了。
    SmiteChow
        6
    SmiteChow  
       2015-03-28 12:10:14 +08:00
    和web是一样的啊
    cfan8
        7
    cfan8  
       2015-03-28 23:51:48 +08:00 via Android
    @simman 便宜的几刀也有startssl这种不要钱的
    cfan8
        8
    cfan8  
       2015-03-28 23:52:56 +08:00 via Android
    @incompatible 加密不行的 有些运营商才不管你是api还是网页强行往里面插广告的,只有换端口和协议才行
    incompatible
        9
    incompatible  
       2015-04-08 00:10:19 +08:00
    @cfan8 application/octet-stream运营商也插得进广告?
    cfan8
        10
    cfan8  
       2015-04-08 01:51:58 +08:00 via Android
    @incompatible 才不管你内容,只要是HTTP随机插,结果就是应用崩掉
    incompatible
        11
    incompatible  
       2015-04-08 02:23:15 +08:00
    @cfan8 难以置信。
    如果是text/html,倒还可以插个div之类的
    二进制随机插,运营商到底图个啥??
    cfan8
        12
    cfan8  
       2015-04-08 11:58:05 +08:00 via Android
    @incompatible 不图啥 因为他们代码写的太垃圾,根本就你判断content type
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1933 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:40 · PVG 08:40 · LAX 16:40 · JFK 19:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.