这几天用jsop实现了公司的sso。
这里面最重要的是对cookie的理解。
cookie 就是一个网站存于本地的数据,zai下次请求同一个网站时,发送给服务器,服务器端可以进行AUD操作,这种操作后的数据会返回并保留在本地,等待下次请求。
对同一个网站,不管是网页,ajax,或者jsonp请求,cookie都会被发送到服务器。
利用jsonp把sso站点的cookie,传送登录站点,解析后,通过回调,传送给当前站点,就完成了sso的登录功能。
其实就是,cookie只和被请求站点有关,任何方式对站点的请求,只会传送被请求站点的cookie,和发起请求的站点无关。
private void ReturnUserInfo(WebUser user,string token,string userJson) { HttpContext.Current.Response.Write(callbackName + "({"result":"0","uname":"" + user.RealName + "","token":"" + token + "","data":"" + userJson + ""});"); HttpContext.Current.Response.End(); }
//ajax function GetJsonpData(callback,data,url) { $.ajax({ async: false, crossDomain: true, type: "GET", dataType: "jsonp", jsonpCallback: callback, //jsonp: "callback", //默认callback url: url, data: data, contentType: "application/json; charset=utf-8", success: function (json) { }, beforeSend: function () { }, complete: function (data, status) { }, error: function (XMLHttpRequest, textStatus, errorThrown) { var t1 = textStatus; var t2 = XMLHttpRequest.status; var t3 = XMLHttpRequest.readyState; ; var t4 = XMLHttpRequest.responseText; // alert(textStatus); } }); }