关于 session 和 cookie 遇到的坑


上个周末遇到个诡异的事情,就是在微信再次授权的时候登入就极其缓慢。



这真的困扰了好久,因为事情总是发生在过了一段时间的时候,登入就会慢,加上自己这边又是使用的session进行存储用户信息,所以自然就朝着这个方向走了。


一开始,我发现之所以要重新授权,是因为微信内置的浏览器总是会不定期清除掉用户的cookie。


结果又是框架又是原生调试了半天,发现cookie的清除不影响微信授权缓慢这件事,


也就是说,微信授权根本就不缓慢!!!!!



后面我把我在授权的回调地址里面所有的sql语句拿出来测试了一遍,


发现真正的问题是updateOrInsert这个语法,因为回调的时候我需要插入和更新了用户的数据。



后记:


    1.laravel 的 session 必须得有 cookie 在能正确取到。


    2.laravel 的 session 时长的设置是有效的,设置在 redis 就是在 redis 设置在 file 就是在 file


    3. 非微信浏览器的 session 关闭后再次打开必然取不到,不关闭的情况下视你的 session 时长


为准;微信端在后台的情况下默认是 2 个小时?(不确定)会自动清除掉 cookie。




再次后记:


    服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。


    如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。 飞雷神


    可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,


而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。


1

关注者
0 个评论