單點登陸–同一個帳戶只能在一台電腦(同一IP)上登陸

來源:互聯網
上載者:User

今天群裡又在討論同一個帳戶只能在一台電腦上登陸

 

我把之前我做過的思路說一下 供大家參考

 

單點登陸本意是使用者只需要登入一次就可以訪問所有相互信任的應用系統。簡單的說就是比如這個網域名稱登陸後,其他的網域名稱可以不用再重複登陸,比如我登陸了QQ空間,可以直接輸入郵箱的地址,而不用重新登入。

 

當初我在網上搜的時候也挺納悶,同一個帳戶只能在一台電腦(同一IP)上登陸對於我來說就叫單點登陸,所以搜的時候沒搜到想要的。

 

好吧,不廢話了,說解決思路。

 

1.在使用者登陸的時候,把使用者的id和目前時間的long值(其他什麼值也可以)存到application的map裡面去。

2.同時把使用者的資訊存到session裡面去。

3.使用者發起請求的時候filter過濾取 session裡面的使用者的long值和根據使用者的id在application裡面取到的long值進行比較。相等,則有效。不相等,則說明已經在另外一個地方登入,當前session就失效,然後自己做自己的業務處理。

 

例如:

User實體有id,passwd欄位

那麼我額外給User實體再加上一個time 欄位(用於存等於登陸時候的時間的long值)

 

User
id為1

passwd為123456

第一次登陸成功時得到目前時間的long值1347264831311

把這個long值set到User然後把整個User儲存到session

同時把這個long值和id:1存到application的一個全域map

id為key long為value

 

此時application裡面的long和當前session裡的long是相等的

session有效

 

第二次使用者再次用 id為1密碼為123456的帳號登陸成功時,會把當前的時間long值如1347265230674存到a
pplication的map中,key為1的value就被改寫成本次登陸時候的時間long值1347265230674

 

那麼第一次登陸的那個使用者的session裡面取到的User的time就和application裡面的就不相等了,則此時session就失效了。

然後你就可以做相應的業務處理了...

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.