请问大家都是怎么在服务端判断来路用户是否已经登录了?
1、用Session的话,有可能会造成Session丢失,就算存数据库的话(或memcache redis),那么也会有过期时间,如果在时间内没登陆还是会丢,总不能设置太长吧??
2、应用端登录成功以后,服务器返回session,然后每次客户端携带过去?这样的话只要是能抓到这个接口,岂不是可以随便搞了?还是我没理解 session/cookie?
3、等你来答。
先谢谢各位~
1
stackpop 2015-03-28 00:18:23 +08:00
2. 可以使用 https, 同时对整个请求的 body 使用公钥加密即可。 如果是明文传输,没有办法的,获取了 session 是可以随便搞的,运营商分分钟往你的网站里面插播广告。
|
2
sumhat 2015-03-28 00:21:16 +08:00
把用户登录的信息使用不可逆的算法加密一下,存在 cookie 里,每次判断 cookie 的值即可
|
3
GhostFlying 2015-03-28 00:48:49 +08:00 via Android
不是每次请求带 token么?要保证这部分不外泄就只有加密连接了
|
4
simman OP @stackpop 如果支持 IOS、Android的话,需要购买什么样的证书?大概需要多少钱/年? 如果使用 https以后,通过抓包软件会抓到什么样的数据呢?
|
5
incompatible 2015-03-28 00:59:28 +08:00
1. 不一定非得用http session啊。每个用户登录时,随机生成一个unique的token,把它返回给客户端、以及与user_id一块扔到redis里。以后客户端每次请求都带上token,服务端便能从redis中获取该用户的信息
2. 把客户端与服务器端通信加密可以解决你的问题。 没必要用https啊。app是你自己的,所以自己生成公钥私钥,把公钥打包在app里就好了。 |
6
SmiteChow 2015-03-28 12:10:14 +08:00
和web是一样的啊
|
8
cfan8 2015-03-28 23:52:56 +08:00 via Android
@incompatible 加密不行的 有些运营商才不管你是api还是网页强行往里面插广告的,只有换端口和协议才行
|
9
incompatible 2015-04-08 00:10:19 +08:00
@cfan8 application/octet-stream运营商也插得进广告?
|
10
cfan8 2015-04-08 01:51:58 +08:00 via Android
@incompatible 才不管你内容,只要是HTTP随机插,结果就是应用崩掉
|
11
incompatible 2015-04-08 02:23:15 +08:00
|
12
cfan8 2015-04-08 11:58:05 +08:00 via Android
@incompatible 不图啥 因为他们代码写的太垃圾,根本就你判断content type
|