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

时间:2013-04-02 17:54:19

标签: asp.net cordova jquery-mobile

我在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”结果,因为用户未被授权
  • 在第二轮比赛中收到“True”,因为SetAuthCookie

当我在浏览器中尝试它时,它按预期工作。 但无论我运行什么移动应用程序,我总是收到False,就像cookie没有被转移一样。

所以问题是如何使用AJAX正确登录用户,是否可能? 什么是最佳做法?由于未知原因,PhoneGap手册未涵盖此简单方案。

1 个答案:

答案 0 :(得分:1)

好的,我找到了答案:

$(document).ready(function () {

   ...

});

不合适。相反,必须使用

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

     ... at this point cookies are working fine!

  },
  false);

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