在信息系統(tǒng)開(kāi)發(fā)的時(shí),根據(jù)相關(guān)業(yè)務(wù)邏輯難免會(huì)多系統(tǒng)之間互相登錄。一般情況下我們需要在多系統(tǒng)之間使用多個(gè)用戶名和密碼。這樣客戶就需要在多個(gè)系統(tǒng)之間重復(fù)登陸。每次登錄都需要輸入用戶名和密碼。最近比較流行的就是OAuth。新浪微博這個(gè)開(kāi)放系統(tǒng)做的就很好。但OAuth并非本文討論范疇。這里主要討論jQuery1.5 jsonp 在Asp.net MVC3 中的應(yīng)用。 本文應(yīng)用場(chǎng)景: 假設(shè)您的開(kāi)發(fā)團(tuán)隊(duì)欲為某集團(tuán)公司開(kāi)發(fā)一整套信息管理系統(tǒng),目前首要開(kāi)發(fā)的就是一套訂單系統(tǒng)和一套內(nèi)部OA系統(tǒng)。前提是這兩套系統(tǒng)使用同一套數(shù)據(jù)庫(kù)。只是兩個(gè)不同的MVC3.0 Web項(xiàng)目。也就是說(shuō)會(huì)在同一個(gè)IIS上部署兩個(gè)虛擬目錄。 我們的目標(biāo)是在不使用WCF、WebService 等技術(shù)實(shí)現(xiàn)跨域登錄。也就是說(shuō)用戶用同一個(gè)賬號(hào)登錄了訂單系統(tǒng),那么客戶就可以直接登錄OA系統(tǒng)。而不需要在OA系統(tǒng)上再輸入一次用戶名和密碼。反之亦成立。 jQuery1.5 JSONP 使用:
在MVC3.0中建立JSONP專用ActionResult。 代碼如下:
JsonpResult 簡(jiǎn)單調(diào)用如下:
AppLogOn的action參數(shù)完全和上文中的jquery $.ajax 參數(shù)一致:
小結(jié): Jsonp的服務(wù)器端的原理其實(shí)就是回調(diào)一個(gè)js函數(shù)名(這里是callback參數(shù))將該參數(shù)傳給服務(wù)端,接著再由服務(wù)器端執(zhí)行這個(gè)callback js函數(shù), 同時(shí)附上該js函數(shù)的參數(shù)。比如上文的C#代碼: var jsonp = this.CallbackName + "(" + js.Serialize(this.Obj) + ")";還有一點(diǎn)我們要注意的就是安全隱患問(wèn)題:在使用jsonp由于涉及到跨域,需要考慮到對(duì)方站點(diǎn)或者對(duì)方系統(tǒng)的安全性問(wèn)題。應(yīng)當(dāng)避免安全隱患,不能濫用jsonp。 |
|