天天看點

keycloak~避免出現

場景

keycloak出現"使用者已登入"的界面的場景我們需要先搞清楚,主要是這樣的操作:

  1. 使用者打開一個浏覽器,在上面同時打開多個登入視窗
  2. 使用者先在一個視窗上進行登入
  3. 使用者再第二個視窗上再進行登入
  4. 這時,出現使用者已經登入,事實上,在kc上,如果你已經登入了,則不能再使用其它使用者登入了

原因

  1. 同一個浏覽器在同一個kc realm下,它的sessionid是相同的,是以被認為一個使用者,不支援多個使用者的sessionid

多使用者登入改進

如果希望kc支援在一個使用者登入後,再重新整理第二個界面的登入頁,再使用第二個使用者才能登入。

單使用者不出現​

​使用者已登入​

  1. 前端ftl模闆添加session狀态檢查
  2. 如果cookie中存的sessionid已經登入,而進行redirect_uri
  3. 如果沒有登入,再走正常的登入邏輯
  • 前端登入代碼
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();
        })
    }
      

作者:倉儲大叔,張占嶺,

繼續閱讀