加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用 jsonp 实现 多站点 单点登录

发布时间:2020-12-16 19:29:50 所属栏目:百科 来源:网络整理
导读:script type="text/javascript" $(function () { var oAUri = "@ViewBag.OAVRUri"; var user = "@ViewBag.User"; var pwd = "@ViewBag.PassWord"; $.ajax({ type: "GET", url: String.format('{0}Account/AppLogOn?UserName={1}PassWord={2}callback=?',oAUr

<script type="text/javascript">

$(function () {

var oAUri = "@ViewBag.OAVRUri";

var user = "@ViewBag.User";

var pwd = "@ViewBag.PassWord";

$.ajax({

type: "GET",

url: String.format('{0}Account/AppLogOn?UserName={1}&PassWord={2}&callback=?',oAUri,user,pwd),

cache: false,11

error: function () {

alert("程序出错,请联系管理员.");

},

dataType: "jsonp",

jsonp: 'callback',

success: function (result) {

}

});

});

</script>


在MVC3.0中建立JSONP专用ActionResult

代码如下:

public class JsonpResult<T> : ActionResult

{

public T Obj { get; set; }

public string CallbackName { get; set; }

public JsonpResult(T obj,string callback)

{

this.Obj = obj;

this.CallbackName = callback;

}

public override void ExecuteResult(ControllerContext context)

{

var js = new System.Web.Script.Serialization.JavaScriptSerializer();

var jsonp = this.CallbackName + "(" + js.Serialize(this.Obj) + ")";

context.HttpContext.Response.ContentType = "application/json";

context.HttpContext.Response.Write(jsonp);

}

}

JsonpResult 简单调用如下:

public ActionResult AppLogOn(string UserName,string PassWord,string callback)

{

return new JsonpResult<object>(new { success = true,rankName = rankName },callback);

}

AppLogOn的action参数完全和上文中的jquery $.ajax 参数一致:

url: String.format('{0}Account/AppLogOn?UserName={1}&PassWord={2}&callback=?',pwd)

小结: Jsonp的服务器端的原理其实就是回调一个js函数名(这里是callback参数)将该参数传给服务端,

接着再由服务器端执行这个callback js函数,同时附上该js函数的参数。

比如上文的C#代码:var jsonp = this.CallbackName + "(" + js.Serialize(this.Obj) + ")";

还有一点我们要注意的就是安全隐患问题:在使用jsonp由于涉及到跨域,需要考虑到对方站点或者对方系统的安全性问题。

应当避免安全隐患,不能滥用jsonp

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读