public class JsonpResult : JsonResult { object _data = null; public JsonpResult() { } public JsonpResult(object data) { this._data = data; } public override void ExecuteResult(ControllerContext context) { if(context != null) { HttpResponseBase response = context.HttpContext.Response; HttpRequestBase request = context.HttpContext.Request; string callbackFunction = request["callback"]; if(string.IsNullOrEmpty(callbackFunction)) { throw new Exception("callback function name is empty"); } response.ContentType = "application/x-javascript"; if(_data != null) { string strjson = Newtonsoft.Json.JsonConvert.SerializeObject(_data); response.Write(string.Format("{0}({1});", callbackFunction, strjson)); } } } }
public class apiController : Controller { // GET: api /// <summary> /// 登入账号 /// </summary> /// <returns></returns> public JsonpResult getUserName() { return new JsonpResult(new { name = User.Identity.Name }); } /// <summary> /// 是否已经登入,已登入islogin=1,否则为0 /// </summary> /// <returns></returns> public JsonpResult isUserLogin() { return new JsonpResult(new { islogin = Request.IsAuthenticated ? 1 : 0 }); } }
client:
<script type="text/javascript"> var hxsso = function (url) { return { checkIsLogin: function (callbackfun) { $.ajax({ url: url + "/api/isUserLogin", type: "GET", dataType: "jsonp", jsonp: "callback", success: function (data) { if (callbackfun) { callbackfun(data.islogin); } } }); }, loginName: function (callbackfun) { $.ajax({ url: url + "/api/getUserName", type: "GET", dataType: "jsonp", jsonp: "callback", success: function (data) { if (callbackfun) { callbackfun(data.name); } } }); } } } $(function () { var ssoObj = hxsso("http://192.168.16.241:8520"); //var ssoObj = new hxsso("http://www.2.sso.com"); ssoObj.checkIsLogin(loginOnCallBack); function loginOnCallBack(islogin) { var url = ""; if (islogin) { $("#ploginOut").show(); $("#plogin").hide(); if ("@isLogin" == "0") {//sso已经登入,本地未登入,这就需要本地保存自己的cookie。 ssoObj.loginName(setUserCookie); } } else { $("#ploginOut").hide(); $("#plogin").show(); if ("@isLogin" == "1") {//sso未登入,本地确已经登入,这就需要注销本地的。 url = "/Home/RemoveUserCookie"; $.ajax({ url: url, type: "GET", success: function (data) { } }); } } } function setUserCookie(name) { $.ajax({ url: "/Home/SetUserCookie?name=" + name, type: "GET", success: function (data) { } }); } }) </script>
时间: 2024-10-13 16:35:26