鍍金池/ 問答/PHP/ 如何設計一個帳戶只能一個終端登陸?

如何設計一個帳戶只能一個終端登陸?

如題:
我自己的邏輯:
1.在用戶表中新增一個字段 is_online(是否已登陸 0 未登陸 1登陸)
2.登陸時判斷此字段是否為1 ,退出時,更新此字段為0

如果用戶非正常退出的情況 (關閉瀏覽器等) 這個情況就會沒辦法更新is_online字段

目前想到一個方法:但是沒有完全理解

就是將session_id存入數據庫 登陸時判斷數據庫中的session_id 在服務器中是否存在?

這個具體如何操作 請教一下

回答
編輯回答
孤星
2018年6月13日 01:38
編輯回答
哚蕾咪
2017年7月18日 02:39
編輯回答
孤巷

我們網站是用的memcache共享session做到的

2018年2月13日 11:17
編輯回答
朕略傻

每次登錄都生成一個用戶user_id與相對的token,保存到數據庫里。每次接口請求之前判斷這個token是否有效,重新登錄后token發(fā)生變化,之前登錄的token驗證就失效了,從而實現一個帳戶只能一個終端登陸。

2017年11月1日 09:37
編輯回答
拮據

每次登陸后生成一個有時效token,保存在服務器端和客戶端,每次鑒權時只驗證這個token
這樣新的登錄事件發(fā)生后,由于token改變,以前的有效登錄就自動失效了

2018年9月15日 08:31
編輯回答
茍活

登陸時,將session_id存入數據庫 鑒權時判斷 數據庫中的session_id在服務器中是否還存在

通過session_save_path()獲取session_id在服務器中的目錄路徑

//判斷數據庫中用戶是否登陸
if($admin['is_online']) {
    //如果用戶非正常退出時, 判斷session_id是否存在 如果存在 提示已經登陸 ( session默認30分鐘失效)
    if(file_exists(session_save_path().'\\'.$admin['session_id'])) {
        ajaxmsg('此賬號已在其它地方登陸,請先退出后再登陸',0);
    }
}
2017年12月2日 08:10