首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC 3 利用 JSONP 實現跨域登入整合

     編輯:關於ASP.NET

情境:同一 IIS 部署訂單系統與 OA 系統 (不同虛擬目錄),共用資料庫,需單一帳號登入其中一系統後自動登入另一系統,不使用 WCF/WebService。

前端 jQuery JSONP 請求

$.ajax({
    type: "GET",
    url: String.format('{0}Account/AppLogOn?UserName={1}&PassWord={2}&callback=?', oAUri, user, pwd),
    dataType: "jsonp",
    jsonp: 'callback',
    success: function (result) { /* 處理結果 */ }
});

後端專用 JsonpResult

public class JsonpResult<T> : ActionResult {
    public T Obj { get; set; }
    public string CallbackName { get; set; }
    public JsonpResult(T obj, string callback) { Obj = obj; CallbackName = callback; }
    public override void ExecuteResult(ControllerContext context) {
        var js = new JavaScriptSerializer();
        var jsonp = CallbackName + "(" + js.Serialize(Obj) + ")";
        context.HttpContext.Response.ContentType = "application/json";
        context.HttpContext.Response.Write(jsonp);
    }
}

Action 使用

public ActionResult AppLogOn(string UserName, string PassWord, string callback) {
    // 驗證帳號密碼...
    return new JsonpResult<object>(new { success = true, rankName = rankName }, callback);
}

原理:JSONP 透過 callback 參數傳遞前端函數名,伺服器回傳 callbackName(jsonData) 字串,瀏覽器執行該函數實現跨域資料傳遞。需注意安全風險,避免濫用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved