客户端时间错误,IE下cookie过期时间无法正常控制?

新手上路,请多包涵

如果服务器时间是2014-11-15 16:00,设置Cookie过期时间是取服务器当前时间+2小时。客户端时间是2014-11-15 20:00。假设用户登录后记录Cookie,这种情况在IE下是无法登录的。
我现在能想到的就是对比客户端与服务器时间,超过两个小时后提示用户,但是这个做法真是太低端了。。。
请教各位大神是否有更NB的解决方案?

阅读 5.4k
1 个回答

客户端的时间是很不靠谱的,不要依赖于客户端的正确性。对于问题中的情况,不要设置 cookie 过期时间或设置一个足够长的时间,将过期逻辑完全放在服务器端来判断。

具体来说,比如要想记录用户是否登录,流行的做法是登录 cookie 里面放的就是一个服务器端生成的唯一的 key,这个 key 存在服务器的缓存里(memcached/redis 等),并且在服务器端记录用户的登录时间。每次用户请求任何一个页面的时候都应该读取 cookie 中的这个 key 并验证 key 是否过期。如果 key 过期,服务器删除客户端 cookie。