兩個賬號同時登入,後登入的賬號將前乙個賬號擠掉

2021-09-30 06:42:37 字數 948 閱讀 5111

最近有個小專案要求實現相同的賬號不能同時登入,如果有兩個賬號(一樣)登入,那麼後登陸賬號能擠掉前乙個賬號,像webqq那樣被擠掉的賬號還要有通知。當時首先想到的是有沒有一種方法是這樣的:乙個客戶端有乙個賬號在登入,首先判斷該賬號是不是已經登入,如果有通知伺服器該客戶端有同樣的賬號登入,然後再發訊息給另外乙個客戶端,通知其賬號被擠掉。如果沒有則正常登入。但是這種方法我不太清楚。後來想到該原理與**裡面的即時訊息機制是一模一樣的。(可以以為例,我們發乙個短訊息給另外乙個使用者,該使用者可以馬上收到資訊,就是互相通話)

在後來只知道一般這個訊息機制是通過不斷讀取資料庫中的資料,例如:

一張表式這樣的(自己想的乙個非常簡單的)

messageid

messagefrom

messageto

meesagecontent

messageread1小明

小芳「你好」

false2小芳

小明「你好」

false……

…………

…………

……那麼在客戶端我們不斷查詢資料庫

select * from dt_message where messageto=』該使用者』

那麼我們可以得到該使用者收到的資訊了。

這樣在這個基礎上我想到建立如下圖的表:

使用者登入的時候我們就會改寫該使用者對應的userip欄位,將其值設定為登入使用者的客戶端ip位址。然後客戶端不斷地(每隔1秒)向伺服器提出請求要求得到userip欄位,得到的userip欄位與該客戶端ip位址相比較,當不相等時,就代表該賬號在別處登入。那麼我們在作出相應的處理,幫該使用者登出,並告知他該賬號已在別處登入。

程式環境:vs2008+sql 2005

執行時將database資料夾裡資料庫附加到資料庫中去。

這裡給出我這裡實驗的例子

(注:該程式主要是驗證我的猜想,並實擠賬號的功能,其餘的一切忽略。賬號:hu 密碼:123)

關於乙個賬號不可同時登入的問題 前端

oa系統,乙個賬號不能兩個地點同時登入。實現 登入,登出,關閉瀏覽器向後台傳送賬號狀態。難點 系統為vue elementui axios sessionstorage儲存token 技術,登入 登出按鈕click無難度,重難點為關閉瀏覽器傳送登出狀態。1 關閉瀏覽器發狀態不能使用axios 不能是...

單點登入之限制同一賬號在多平台同時登入

在很多web產品中都需要實現在同一時刻,只能允許乙個賬號同時只能在乙個瀏覽器當中登入。通俗點講就是當a賬號在瀏覽器1當中登入了,此時在瀏覽器2中登入a賬號。那麼在瀏覽器1中的a賬號將會被擠出去,當使用者操作瀏覽器1的頁面,頁面會跳到登入頁面,需要重新登入。那麼我們怎麼實現這樣的功能呢?下面將給大家進...

git兩個賬號切換 Git切換賬號方法

windows修改git賬號 開啟控制面板 win s快捷鍵 輸入 control 命令列 control 憑證管理器 使用 憑證管理器 修改git賬號 全域性範圍修改賬號 執行git config global選項 git config global user.name john doe git ...