9

我在 iPad/iPhone 上使用 Chrome 时遇到了问题,我认为这是一项足够简单的任务,可以在 Chrome 桌面(Mac 和 PC)和 iPad/iPhone 上的 Safari 上运行。

我的页面上有以下 jquery:

$("#login-login-button").click(function () { var username = $("#Username").val(); var password = $("#Password").val();

    $("#login-loading-icon").show();

    $.post("/login", { username: username, password: password }, function (data, response) {
        if (response == "success") {
            if (data.IsValid) {
                window.location.href = "/profile";
            }
            else {
                $("#login-error-message").html(data.ErrorMessage);
                $("#login-loading-icon").hide();
            }
        }
        else {
            alert("An error occurred, please try again.");
        }
    });
});

控制器动作的代码如下所示:

[HttpPost]
public JsonResult Index(string username, string password)
{
        AjaxResponseModel ajaxResponseModel = new AjaxResponseModel();

        User user = UserDAL.Select(username, Hash.MD5(password));

        if (user != null)
        {
            if (!user.IsVerified.Value)
            {
                ajaxResponseModel.AddErrorMessage("Account not verified.");
            }
            else if (!user.IsActive.Value)
            {
                ajaxResponseModel.AddErrorMessage("Your account is not active.");
            }
            else
            {
                FormsAuthentication.SetAuthCookie(username, false);
            }
        }
        else
        {
            ajaxResponseModel.AddErrorMessage("Login details incorrect.");
        }

        return Json(ajaxResponseModel);
    }

我尝试通过非 ajax 请求设置 Auth Cookie,但它也不起作用。

而且我发现在 iPad/iPhone 上,如果我在 Chrome 菜单中使用“请求桌面站点”,问题就会消失,但是此时我的站点上没有移动/桌面的概念,即 Chrome 第一次应该得到什么成为桌面站点...

4

1 回答 1

6

已经在这里回答了:Asp.Net Forms Authentication when using iPhone UIWebView

考虑到当前的浏览器分布,我使用了更合理的默认配置。

<browsers>
  <browser refID="Default"> 
    <capabilities> 
      <capability name="cookies" value="true" /> 
    </capabilities>
  </browser>
</browsers>
于 2012-07-15T09:57:35.923 回答