場景
keycloak出現"用戶已登錄"的界面的場景我們需要先搞清楚,主要是這樣的操作:
- 用戶打開一個瀏覽器,在上面同時打開多個登錄視窗
- 用戶先在一個視窗上進行登錄
- 用戶再第二個視窗上再進行登錄
- 這時,出現用戶已經登錄,事實上,在kc上,如果你已經登錄了,則不能再使用其它用戶登錄了
原因
- 同一個瀏覽器在同一個kc realm下,它的sessionid是相同的,所以被認為一個用戶,不支持多個用戶的sessionid
多用戶登錄改進
如果希望kc支持在一個用戶登錄后,再重繪第二個界面的登錄頁,再使用第二個用戶才能登錄,
單用戶不出現用戶已登錄
- 前端ftl模板添加session狀態檢查
- 如果cookie中存的sessionid已經登錄,而進行redirect_uri
- 如果沒有登錄,再走正常的登錄邏輯
- 前端登錄代碼
function confirmSession(callback) {
$.get("/auth/realms/fabao/sms/session-exist", function (o) {
console.log(o);
if (o.exist) {
location.href = https://www.cnblogs.com/lori/p/getQueryVariable("redirect_uri");
} else {
callback();
}
});
}
function login_f() {
confirmSession(function () {
document.getElementById("kc-form-login").submit();
})
}
作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311920.html
標籤:Java
