Stack Overflow中有一些类似的问题,但没有人给我一个线索如何处理我的问题。登录后保留会话ID CakePHP
我将我的应用程序从CakePHP 1.3迁移到2.x,并且我的购物车有问题。我的用户可以在未登录的情况下将商品添加到购物车,并在登录后合并购物车的商品。在1.3版本中,它运行良好,因为会话ID在登录后没有改变,但现在该功能被破坏,因为会话ID在用户登录后被更改。
有没有办法在登录后留下旧的会话ID或我需要自己写点东西?如果是这样,那么在这里最好的做法是什么?
目前我保存到数据库推车authentificated用户与他们的user_id
,并为匿名用户与他们的session_id
并登录后,我就发现车被user_id
和session_id
,合并项目,比session_id
删除车,但现在是不可能做到的,因为session_id
更改。
您可以在会话中为未经验证的用户保存购物车信息,登录后不会丢失它。 – ADmad 2014-09-05 17:49:30
谢谢,这让我很惊讶。我没有检查过这个案例,因为改变了'session_id',所以我相信会话数据也丢失了。但现在我只是在AppController中将匿名'session_id'保存到'Session'中,并且每次检查它是否设置并且用户都被验证了,我正在使用'session_id'合并购物车的商品而不是当前。虽然接受的答案是正确的,我不能使用这种方法,因为我的应用程序中有多个登录方法。 – Yaroslav 2014-09-06 00:08:40
出于安全原因,Auth组件在登录后重新生成会话ID。会话数据在PHP重新生成新会话ID时保留。您遇到问题的唯一原因是您使用陈旧的会话ID。在保存数据库中未认证用户的购物车方面,我看不到什么好处。保持会话,然后在登录后坚持数据库。 – ADmad 2014-09-06 08:28:14