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/your-realms/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();
        })
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM