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