[英]How to limit number of simultaneous sessions per user account in Laravel 4
我正在開發一個基於訂閱的項目,並且每個用戶的帳戶需要限制為 2 個並發會話。
我有一些想法,但我不完全確定如何做到這一點,也許有一些我不知道的內置方法可以做到這一點。
歡迎任何建議。
我在想,如果我將會話驅動程序切換到數據庫,然后擴展身份驗證或會話驅動程序以在會話表中存儲一些額外的信息,比如用戶 ID,那么這會很容易做到。
也不完全確定如何做到這一點,所以任何幫助將不勝感激!
我認為您在談論來自不同 IP/設備的多重登錄? 這就是我現在所想的。 你不能算“瀏覽器標簽”或類似的東西......
因此,如果這是您的情況,那么您的解決方案非常簡單。 將任何用戶登錄綁定到數據庫中的活動記錄或其他持久性。
數據庫型號:
userSession (
'id', // primary key
'userId', //foreign key
'sid', //unique session id
'ip', //unique user id or uniqure device (I preffer IP!)
'login', //datetime
'lastClick' //datetime
);
如果該用戶的 db 中存在活動記錄,則活動會話將打開。 您需要在任何用戶操作(我認為是 HTTP 請求)上檢查給定的 db 用戶記錄。 您現在可以計算一個用戶的活動用戶會話。 您現在還可以通過刪除依賴的 userSession 記錄來踢用戶。
這可以通過在表中使用 UPDATE 的 sql 來實現,並將一列設置為活動會話,php 檢查會話是否超過 2 個,如果它們被拒絕登錄,或者其他方式。
<?php
function checkSessions(){
mysql_connect(data);
$q = "SELECT * FROM users WHERE username=$username && password=$password";
while($row = mysql_fetch_array($q)){
if($row["Active Sessions"] >2){
die("There are too many people using the account right now");
}
你明白這是一個樣本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.