a.com登錄成功後 b.com也可以正常訪問
清空a.com的cookie信息
b.com登錄信息也失效
思路:
1、主要根絕ajax使用jsonp跨域請求時候 同一個單點服務器會使用相同的session 整個項目sessionId相同
2、任何一個項目登錄之後 將sessionId和登錄成功的用戶信息保存到redis中
3、其他站點使用JsonP請求驗證登錄的接口 如果能通過sessionId從緩存中讀取到用戶信息 說明當前用戶已經登錄
**注:**一定要使用單點登錄驗證服務器 有效避免多服務器導致sessionId重複 出現登錄用戶串臺問題
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
</head>
<body>
<button id="btn" type="button">測試請求</button>
<script src="https://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script>
$(function() {
$.ajax({
type: "get",
async: false,
url: "http://127.0.0.1:8080/webapi/extSmeCustLogin/syncLoginStatus",
dataType: "jsonp",
jsonp: "callback", //傳遞給請求處理程序或頁面的,用以獲得jsonp回調函數名的參數名(一般默認爲:callback)
jsonpCallback: "jsonpCall", //自定義的jsonp回調函數名稱,默認爲jQuery自動生成的隨機函數名,也可以寫"?",jQuery會自動爲你處理數據
success: function(jsons) {
Console.log(jsons);
},
error: function() {
Console.log('fail');
}
});
});
$("#btn").click(function() {
$.ajax({
url: "http://127.0.0.1:8080/webapi/partyCollection/count?partyId=1082&partyType=3",
async: false,
dataType: "jsonp",
success: function(data) {
alert(data.message);
}
});
});
</script>
</body>
</html>