2011-11-12 54 views
0

我有一個Symfony應用程序,它使用mysql數據庫存儲會話數據,並使用SfGuard插件來管理身份驗證。 儘管sym​​fony總是將認證信息保存在cookie中。無論如何,我可以禁用cookie並將認證信息存儲在數據庫或內存中嗎? 我可能需要在將來有一種單點登錄功能,其中身份驗證狀態將在多個應用程序之間持續存在,位於不同的域中。這就是爲什麼我主要想要消除使用cookie的需要。symfony 1.4 session不使用cookies

謝謝你的幫助。

+0

請看這裏如何獲得會議沒有餅乾:http://stackoverflow.com/questions/3740845/php-session-without-cookies這是你真正想要的?我想多域不是問題:看看堆棧交換,他們有多個站點,但是會話之間仍然存在一些同步。 – greg0ire

+0

如果我很好地閱讀了這篇文章,爲了工作,我需要在url中附加一個會話ID。我不想那樣做。我想在我的數據庫或內存中存儲身份驗證信息(例如$ _SESSION ['authenticated'] = true。如果我禁用cookie,我不能在我的應用程序登錄 – brpaz

回答

2

您似乎不瞭解會話的工作方式。

發送給cient的cookie被稱爲會話ID,它對訪問者來說是唯一的。當他從服務器請求一個頁面時,cookie會在他的數據所在的會話表中標識該行 - 除了ID以外,除了ID之外的任何數據都會發送到客戶端。

如果沒有該ID,則無法將請求與會話數據配對,這就是爲什麼禁用Cookie後無法再登錄。 Cookie的替代方法是以其他方式傳遞會話ID,例如在url中 - php可以自動執行此操作,您只需在php.ini中啓用use_trans_sid即可。

+0

是的,我發現我自己,我會接受你的回答作爲答案,我會尋找其他解決方案,像這樣:http://stackoverflow.com/questions/2956214/cross-domains-sessions-shared-shopping-cart-cross-domains – brpaz

0

是的,您可以將認證信息存儲在數據庫中:請參閱here如何。

+0

我已經有數據庫存儲會話在我的應用程序,但它仍然在認證中使用Cookie – brpaz

+0

確實,但我認爲你會很高興能有解決方案的一部分 – greg0ire