單點登入——解決分散式專案中session共享問題
阿新 • • 發佈:2019-02-17
初學有感,希望各位大佬在下面批評指教,晚輩萬分感激!
----------------------------------------------------------------------------------------------------------------------------------
單點登入的實現其實就是cookie與redis配合模擬一個session,具體思路:
使用者登入後,將使用者名稱儲存在cookie中,並且在redis中有所儲存,二者均設過期時間。cookie就將使用者資訊儲存在本地瀏覽器。
可以寫段js,該頁面只要載入,該js就載入,並且去瀏覽器查詢對應的cookie,找到發給單點登入工程,單點登入工程拿著該cookie中的使用者名稱去redis中查詢相關使用者資訊,若一切順利,返回給該js。不順利的原因可能是使用者過期或者其他什麼原因,重新登入,儲存cookie和redis。
獲取cookie的js程式碼:其中token為cookie的name
var E3MALL = { checkLogin : function(){ var _ticket = $.cookie("token"); if(!_ticket){ return ; } $.ajax({ url : "http://localhost:9999/user/token/" + _ticket, dataType : "jsonp", type : "GET", success : function(data){ if(data.status == 200){ var username = data.data.username; var html = username + ",歡迎來到宜立方購物網!<a href=\"http://www.e3mall.cn/user/logout.html\" class=\"link-logout\">[退出]</a>"; $("#loginbar").html(html); } } }); } }