图示整体思路:
思路:
1.在本服务器上验证用户合法性;
2.通过jsonp 访问sso服务器,获取统一登录的所有web系统url列表;
3.通过jsonp 访问列表中的每条数据,记录cookie;
4.登出思路同上,把记录cookie改成清除cookie即可;
特殊情况,需要登录的web系统中各个系统同一个用户用户名相同;
//提交函数jsonp
function postp(url) {
$.ajax({
type: "get",
url: url,
contentType: "application/json;_charset=utf-8",
dataType: "jsonp",
jsonp: "SsoList", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback: "flightHandler", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
success: function (res) {
alert(res);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(jQuery.parseJSON(XMLHttpRequest.responseText).Message);
}
});
}
function postpp(url) {
$.ajax({
type: "get",
url: url,
async: false,
contentType: "application/json;_charset=utf-8",
dataType: "jsonp",
jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback: "flightHandler", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
success: function (res) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
}
});
}
function SsoList(data) {
var sitelist = data.list;
var i = 0
for (; sitelist.length > i; i++) {
postpp(sitelist[i] + '?name=' + userName + '&type=Login');
}
window.location.href = "main.aspx";
}
//验证成功---sso登录
function IntSSO(username) {
postp("http://localhost:17077/scripts/remote.js");
}
1所有系统处于待登录
2,登录第一个系统,刷新其他系统,都成功登录
3.登出系统
4,任选一个登出
5刷新任意一个系统,都已经退出登录