場景
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 = getQueryVariable("redirect_uri");
} else {
callback();
}
});
}
function login_f() {
confirmSession(function () {
document.getElementById("kc-form-login").submit();
})
}
作者:倉儲大叔,張占嶺,