Shiro 同一使用者同一時刻只能在乙個地方登入

2021-09-29 13:53:04 字數 878 閱讀 3360

思路:

首次登陸成功, 把sessionid放入redis

redistemplate.

opsforvalue()

.set

("token_"

+userid, sessionid)

;//id為登入賬戶id

後面的每次登入成功後, 都通過token_userid查詢出上一次的sessionid , 然後獲取session並刪除。最後把本次登入的sessionid放入redis。

搞定。。。

/**

* 刪除上一次的登入session

* @param sessionid 本次登入成功後的sessionid

* @param userid 使用者id

*/private

void

delhistory

(string sessionid, integer userid )

//把本次登入成功的sessionid放入redis, 與賬戶id關聯

redistemplate.

opsforvalue()

.set

("token_"

+userid , sessionid);}

/** * 通過sessionid獲取session

*/public

static session getsessionbyid

(string sessionid)};

return securityutils.

getsecuritymanager()

.getsession

(sessionkey)

;}

如何讓多執行緒同一時刻併發執行

使用場景 需要在本機試試自己的介面在某個時間訪問可以被執行的頻率 嚴格意義上來說,不算同一時刻,因為多執行緒執行也是上下文切換的 其實你想找的是某個時間範圍 如一秒內 你的介面呼叫頻率 下單,加購,儲存資料 下面的 可以參考要點第一步 定義執行緒 public class runnabledemo ...

解決定時器同一時刻執行多條任務時阻塞問題

解決定時器同一時刻執行多條任務時阻塞問題 普通的定時任務,會乙個乙個執行,當同一時間有多個定時任務啟動並且含有資料量比較大的任務時,會阻塞其他的定時任務,這樣會產生一系列的問題 解決辦法 將定時任務放入執行緒池 配置如下 1 新增全域性 enableasync 註解,開啟對非同步的支援 enable...

防止同一使用者同時登入

從網上看到的文章。覺得很不錯,可以一試。先複製過來以備後用。要防止同一使用者同時登陸,在這裡使用乙個cache存放已經登陸的使用者名稱,但是還有乙個問題就是要知道使用者是什麼時候離開 系統的呢?這就要定期清除cache中的內容了,也就是設定乙個cache的時間。這個時間可以跟使用者的session值...