使用 jsonp 实现 多站点 单点登录
来源:互联网 发布:plc编程电缆 编辑:程序博客网 时间:2024/06/05 17:56
<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=?', oAUri, user, pwd)
小结: Jsonp的服务器端的原理其实就是回调一个js函数名(这里是callback参数)将该参数传给服务端,
接着再由服务器端执行这个callback js函数,同时附上该js函数的参数。
比如上文的C#代码:var jsonp = this.CallbackName + "(" + js.Serialize(this.Obj) + ")";
还有一点我们要注意的就是安全隐患问题:在使用jsonp由于涉及到跨域,需要考虑到对方站点或者对方系统的安全性问题。
应当避免安全隐患,不能滥用jsonp
- 使用 jsonp 实现 多站点 单点登录
- jsonp+session实现单点登录
- 使用JSONP实现单点退出
- 多站点整合-单点登录简单方案
- 多站点单点登录(SSO)设计 (转)
- 利用Cache功能实现站点单点登录 防重复登录
- 使用WIF实现单点登录
- 使用php实现单点登录
- 多站点整合—单点登录简单方案(Sohu的实现方案)
- 站点集群系统中实现简单的单点登录(SSO)
- 单点登录(一)使用Cookie+File实现单点登录
- 单点登录详解(一)--使用Cookie+Filter实现单点登录
- 网站跨站点单点登录
- 网站跨站点单点登录
- 网站跨站点单点登录
- 网站跨站点单点登录
- 网站跨站点单点登录
- 网站跨站点单点登录
- sed结构分析 + awk结构分析
- Java PriorityQueue实现类lucene段合并
- Android教程之——Log图文详解
- 让GridView的所有行的颜色都一样
- ActiveMQ5.4.2+Spring2.5实现异步邮件
- 使用 jsonp 实现 多站点 单点登录
- js判断操作系统
- 指针的引用
- ASP.NET 水晶报表在iis中无法显示的解决办法
- 手机定位原理
- 变压器笔记bluesea
- div被select遮挡
- pro*c连接oracle 简单增删改
- STM32 ADC的规则通道和注入通道有什么区别