1. 程式人生 > >單點登入——解決分散式專案中session共享問題

單點登入——解決分散式專案中session共享問題

初學有感,希望各位大佬在下面批評指教,晚輩萬分感激!

----------------------------------------------------------------------------------------------------------------------------------

單點登入的實現其實就是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);
				}
			}
		});
	}
}