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

2015-03-28 00:11:50 +08:00
 simman

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

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

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

3、等你来答。

先谢谢各位~

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

2. 把客户端与服务器端通信加密可以解决你的问题。
没必要用https啊。app是你自己的,所以自己生成公钥私钥,把公钥打包在app里就好了。
SmiteChow
2015-03-28 12:10:14 +08:00
和web是一样的啊
cfan8
2015-03-28 23:51:48 +08:00
@simman 便宜的几刀也有startssl这种不要钱的
cfan8
2015-03-28 23:52:56 +08:00
@incompatible 加密不行的 有些运营商才不管你是api还是网页强行往里面插广告的,只有换端口和协议才行
incompatible
2015-04-08 00:10:19 +08:00
@cfan8 application/octet-stream运营商也插得进广告?
cfan8
2015-04-08 01:51:58 +08:00
@incompatible 才不管你内容,只要是HTTP随机插,结果就是应用崩掉
incompatible
2015-04-08 02:23:15 +08:00
@cfan8 难以置信。
如果是text/html,倒还可以插个div之类的
二进制随机插,运营商到底图个啥??
cfan8
2015-04-08 11:58:05 +08:00
@incompatible 不图啥 因为他们代码写的太垃圾,根本就你判断content type

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/179833

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX