7 回答

TA貢獻1827條經(jīng)驗 獲得超8個贊
兩個瀏覽器代表兩個不同的客戶端,當然會有兩個sessionId咯。
用戶重復登錄的問題可以通過注銷上一個登錄信息或者覆蓋上一個登錄的信息來解決。
由于http協(xié)議的無狀態(tài)性,服務器是沒法確定哪一個是你當前賬號的session的...
-重新讀了一遍問題,發(fā)現(xiàn)題主的意思應該是在服務器集群下如何使兩個服務器辨別同一個用戶才對,我覺得可以采用共同使用同一存儲中心的方式來完成。恩,對于redis了解不多,希望有大神來指正,小的不才,說錯勿怪。

TA貢獻1799條經(jīng)驗 獲得超9個贊
"實現(xiàn)避免用戶重復登錄"是什么意思?
我們假設你有如下場景:
電腦A登錄網(wǎng)站,因為
cookie
中沒有任何信息,所以需要登錄,登錄后服務器端生成一個sessionID
,并返回給前端,瀏覽器記入cookie
,下次再開這個網(wǎng)頁時,只要cookie
沒過期,就會把sessionID
傳給服務器,服務器憑此sessionID
找到用戶信息,然后告訴前端已經(jīng)登錄過了可以反問登錄后的頁面/信息。電腦B在電腦A登錄過之后,也去訪問網(wǎng)站,然后因為
cookie
中沒有任何信息,所以需要登錄,登錄后服務器端生成一個sessionID
,并返回給前端,瀏覽器記入cookie
。。。。一切如電腦A一樣。沒毛病
所以你的問題是?

TA貢獻1805條經(jīng)驗 獲得超10個贊
spring security里面是通過用戶名的hash值來判斷是否是重復登錄的,可以配置禁止登錄還是踢出之前的登錄。
就是實現(xiàn)一個過濾器在做登錄驗證的時候進行判斷,可以參考security的實現(xiàn)方式。

TA貢獻1804條經(jīng)驗 獲得超7個贊
添加回答
舉報