2012-03-12 71 views
3

我有一個使用Auth登錄系統的CakePHP 1.3.10網站。我怎樣才能防止同一用戶名/密碼在不同地點同時登錄?它應該以一種方式工作,即當一個已經登錄的用戶從不同的位置登錄時,第一個會被踢出(所以最後一個可以繼續使用我的網站)。cakephp阻止用戶同時從多個位置登錄

我一直在做一些研究,但我找不到一個「足夠好」的解決方案。看起來,簡單的一個會在用戶登錄時將布爾值存儲爲1,但我不知道該如何處理,以便按照我描述的方式進行工作。

簡單的部分是,當用戶註銷時,我將該值更改爲0.但是,如果他只關閉瀏覽器會怎麼樣?當用戶登錄並且布爾值已經設置爲1時,我該做什麼?我如何踢「老」用戶?

任何意見,將不勝感激......

回答

3

爲了做到這一點,改變你的config/core.php中使用的數據庫驅動的會話。

Configure::write('Session.save', 'database'); 

之後,也取消註釋以下行:

//Configure::write('Session.database', 'default'); 

使用默認DB配置是你要在大多數情況下是什麼。

然後,通過使用蛋糕控制檯準備數據庫主辦會議:

cake schema create Sessions 

最後,在你的登錄操作,檢查是否已經存在會話,只是登錄和無效用戶/刪除他們在會議桌上的舊會話。

我自己以前沒有用過這個方法,但是我認爲用戶名/用戶名存儲在會話表的data字段中(它可能包含一個序列化數組或類似的東西)。

+0

感謝您的回覆。我有一個問題:從Cake控制檯運行該命令將在數據庫中創建一個表?如果是這樣,我該如何選擇創建數據庫(在我的網絡中,我使用了2個不同的數據庫)? – Albert 2012-03-12 15:58:59

+0

@Albert這就是你需要在你的核心配置中設置Session.database的值。無論你在那裏設置什麼,都應該用來創建表格。或者,如果有疑問,您可以「讀取」模式文件並手動創建表格。 – Oldskool 2012-03-12 16:08:28

+0

好的,謝謝,我會試試這個! – Albert 2012-03-12 16:10:13

相關問題