|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
感觉很多控件都必须自己去写代码;用了WebMatrix感觉也不是很好,毕竟没有很强的WYSIWYG效果。现在就不知道如何是好了。在信息体系开辟的时,依据相干营业逻辑不免会多体系之间相互登录。一样平常情形下我们必要在多体系之间利用多个用户名和暗码。如许客户就必要在多个系统之间反复上岸。每次登录都必要输出用户名和暗码。比来对照盛行的就是OAuth。新浪微博这个开放体系做的就很好。但OAuth并不是本文会商范围。这里次要会商jQuery1.5jsonp在Asp.netMVC3中的使用。
本文使用场景:
假定您的开辟团队欲为某团体公司开辟一整套信息办理体系,今朝主要开辟的就是一套定单体系和一套外部OA体系。条件是这两套体系利用统一套数据库。只是两个分歧的MVC3.0Web项目。也就是说会在统一个IIS上部署两个假造目次。我们的方针是在不利用WCF、WebService等手艺完成跨域登录。也就是说用户用统一个帐号登录了定单体系,那末客户就能够间接登录OA体系。而不必要在OA体系上再输出一次用户名和暗码。反之亦成立。
jQuery1.5JSONP利用:- <scripttype="text/javascript">$(function(){3varoAUri="@ViewBag.OAVRUri";4varuser="@ViewBag.User";5varpwd="@ViewBag.PassWord";7$.ajax({type:"GET",url:String.format({0}Account/AppLogOn?UserName={1}&PassWord={2}&callback=?,oAUri,user,pwd),cache:false,error:function(){alert("程序堕落,请接洽办理员.");},dataType:"jsonp",jsonp:callback,success:function(result){}});});</script>
复制代码 在MVC3.0中创建JSONP公用ActionResult
代码以下:- publicclassJsonpResult<T>:ActionResult{publicTObj{get;set;}publicstringCallbackName{get;set;}publicJsonpResult(Tobj,stringcallback){this.Obj=obj;this.CallbackName=callback;}publicoverridevoidExecuteResult(ControllerContextcontext){varjs=newSystem.Web.Script.Serialization.JavaScriptSerializer();varjsonp=this.CallbackName+"("+js.Serialize(this.Obj)+")";context.HttpContext.Response.ContentType="application/json";context.HttpContext.Response.Write(jsonp);}}
复制代码 JsonpResult复杂挪用以下:- publicActionResultAppLogOn(stringUserName,stringPassWord,stringcallback){returnnewJsonpResult<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参数)将该参数传给服务端,接着再由服务器端实行这个callbackjs函数,同时附上该js函数的参数。好比上文的C#代码:varjsonp=this.CallbackName+"("+js.Serialize(this.Obj)+")";另有一点我们要注重的就是平安隐患成绩:在利用jsonp因为触及到跨域,必要思索到对方站点大概对方体系的平安性成绩。应该制止平安隐患,不克不及滥用jsonp。
复制代码 因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。 |
|