當有用戶上線時,插入表中一條數據。用戶下線時(或者判斷用戶離線時)將該條數據刪除。web
若是用戶已經登陸,提示「用戶已經登陸」。分佈式
成功登陸時寫入表中數據。優化
用戶主動退出系統,從表中刪除用戶userId對應的記錄。加密
針對異常下線的狀況,使用邏輯進行判斷:若是用戶半個小時內都沒有操做,則判斷用戶已下線,將用戶從在線用戶表中刪除。spa
使用token。用戶登陸成功時,使用token存儲用戶登錄時間(USER_LOGIN_TIME)、用戶登陸類型(LOGIN_APP_TYPE)、登陸設備(LOGIN_DEVICE)、用戶userID(USER_ID)等信息。blog
所謂的token,就是如下面這種格式token
admin&1,2,3&11,12,13&2018-10-10 10:00:00&web&1字符串
將這個字符串進行加密轉碼(可逆加密),最後獲得的就是token。解密時使用String.split(「&」)獲得List,按照以前的約定格式就能夠得到各類信息。it
說白了,就是用戶登陸成功後將用戶登錄時間(USER_LOGIN_TIME)、用戶登陸類型(LOGIN_APP_TYPE)這些信息做爲校驗的token返回給用戶,而後每次再讓用戶發送過來進行校驗及解析數據。ast
在哪裏解析呢?攔截器,本身定義一個攔截器,註冊好,而後用來校驗和解析token,獲取用戶登錄時間(USER_LOGIN_TIME)、用戶登陸類型(LOGIN_APP_TYPE)這些信息。
Map(Long userId,Date lastOperaTime)。
註冊一個攔截器,每次請求都要根據用戶userId更新用戶最後操做時間。
項目比較小,也並不是分佈式系統,採用的這種簡單的方案。
如今用於項目中,還在觀察效果。沒有最好的方案,合適就好。會根據出現的問題進行修改和優化。