js實現單點登錄


項目中遇到單點登錄這個問題,當點擊鏈接的時候跳轉到另一個系統中並實現自動登錄進去,直接進去系統的頁面

因為不同的系統涉及到跨域的問題,所以使用nginx來解決跨域的問題

先跳轉到另一個系統的一個頁面,在這個頁面里實現登錄操作再跳轉到系統中我們需要的頁面

還有一個問題就是登錄的時候需要用戶名和密碼,用戶名和密碼不是固定的,需要動態獲取,所以跳轉到過渡頁面的時候需要攜帶參數

攜帶參數是通過url傳遞的,這里用戶名和密碼使用了簡單的base64加密

 

 過渡頁面接受參數

    var params = window.location.search; const params1 = params.match(/=(\S*)&/)[1];
    const params2 = params1.split("=")[1];
 
    const login = params1.split("&")[0];
    const pass = params1.split("=")[1];
    const url = params.split("url=")[1];

    var postData = {
        "login": login,
        "password": pass
    };

    postData = (function(obj){ // 轉成post需要的字符串.
        var str = "";
        for(var prop in obj){
            str += prop + "=" + obj[prop] + "&"
        }
        return str;
    })(postData);

    var xhr = new XMLHttpRequest();
    xhr.open("POST", "/api/authentication/login", true);
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xhr.onreadystatechange = function(){
        var XMLHttpReq = xhr;
        if (XMLHttpReq.readyState == 4 && XMLHttpReq.status == 200) {
            location.replace(url);
        }
    };
    xhr.send(postData);

 


免責聲明!

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



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