Asp.net 如何在使用PhoneGap构建的移动应用程序中正确登录用户

Asp.net 如何在使用PhoneGap构建的移动应用程序中正确登录用户,asp.net,cordova,jquery-mobile,Asp.net,Cordova,Jquery Mobile,我正在PhoneGap上构建一个移动应用程序。我创建了几个静态HTML页面(存储在手机本地),并尝试使用AJAX从服务器加载一些数据 $( document ).bind( "mobileinit", function() { $.support.cors = true; $.mobile.allowCrossDomainPages = true; }); $(document).ready(function () { ajaxDeferred

我正在PhoneGap上构建一个移动应用程序。我创建了几个静态HTML页面(存储在手机本地),并尝试使用AJAX从服务器加载一些数据

$( document ).bind( "mobileinit", function() {
        $.support.cors = true;
        $.mobile.allowCrossDomainPages = true; 
    });

$(document).ready(function () {
    ajaxDeferred = $.ajax({
        url: 'http://example.com/api/isAuthorized'
        type: method,
        data: parameters,
        timeout: 40000
    });

    ajaxDeferred
        .done(function(data) {  

              alert(data.result);     

         })
        .fail(onFailHandler);
}); 
在服务器端,我有以下代码

public ActionResult IsAuthorized()
{
        FormsAuthentication.SetAuthCookie("shade", true);

        return this.Json(
            new
                {
                    result = this.HttpContext.User.Identity.IsAuthenticated
                },
                JsonRequestBehavior.AllowGet
            );
 }
我期望:

  • 第一次运行时收到“False”结果,因为用户未经授权
  • 在第二次运行时,由于SetAuthCookie,收到“True”
当我在浏览器中尝试它时,它会按预期工作。 但无论我运行什么样的移动应用程序,我总是收到错误的信息,比如cookies并没有被传输

所以问题是如何使用AJAX正确登录用户,这可能吗? 最佳实践是什么?由于未知的原因,PhoneGap手册没有涵盖这个简单的场景。

好的,我找到了一个答案:

$(document).ready(function () {

   ...

});
这是不合适的。相反,我们必须使用

document.addEventListener(
  "deviceready",
  function() {

     ... at this point cookies are working fine!

  },
  false);

不需要Access Control Allow Origin和Access Control Allow Credentials标头以及其他跨域技术

您是否在此线程上尝试了解决方案?是的,而且,这太复杂了,不可能是真的。