sa-token是什么?
sa-token是一個JavaWeb輕量級權(quán)限認(rèn)證框架
如果你經(jīng)常使用騰訊QQ,就會發(fā)現(xiàn)它的登錄有如下特點:它可以手機電腦同時在線,但是不能在兩個手機上同時登錄一個賬號
同端互斥登錄,指的就是像騰訊QQ一樣,在同一類型設(shè)備上只允許單地點登錄,在不同類型設(shè)備上允許同時在線
在sa-token中如何做到同端互斥登錄?
首先在配置文件中,將 allowConcurrentLogin 配置為false,然后調(diào)用登錄等相關(guān)接口時聲明設(shè)備標(biāo)識即可:
指定設(shè)備標(biāo)識登錄
StpUtil.setLoginId(10001, "PC"); // 指定`賬號id`和`設(shè)備標(biāo)識`進行登錄
調(diào)用此方法登錄后,同設(shè)備的會被頂下線(不同設(shè)備不受影響),再次訪問系統(tǒng)時會拋出 NotLoginException 異常,場景值=-4
指定設(shè)備標(biāo)識強制注銷
StpUtil.logoutByLoginId(10001, "PC"); // 指定`賬號id`和`設(shè)備標(biāo)識`進行強制注銷 (踢人下線)
如果第二個參數(shù)填寫null或不填,代表將這個賬號id所有在線端踢下線,被踢出者再次訪問系統(tǒng)時會拋出 NotLoginException 異常,場景值=-5
查詢當(dāng)前登錄的設(shè)備標(biāo)識
StpUtil.getLoginDevice(); // 指返回當(dāng)前token的登錄設(shè)備
id反查token
StpUtil.getTokenValueByLoginId(10001, "APP"); // 獲取指定loginId指定設(shè)備端的tokenValue