2

登录后,Request.IsAuthenticated 的值不会保持为真。它可以在所有主要的桌面浏览器上完美运行,但不适用于 iPad 上的移动 safari。

我已经尝试了使用 iPhone UIWebView 时发布的 Asp.Net Forms Authentication在 iPad 上使用 jQueryMobile 时未存储的 ASP.NET 身份验证 cookie的两种解决方案,但它们似乎都不起作用。知道为什么它不起作用吗?

感谢您提前提供任何帮助。

4

3 回答 3

4

抱歉挖掘了一个旧线程,但这是搜索 MVC 和 ipad 登录问题时的最佳结果之一。

我找到的解决方案是强制 web conifg 中身份验证标签的 cookieless="UseCookies" 属性。

<authentication mode="Forms">
  <forms loginUrl="~/LogOn" timeout="2880" cookieless="UseCookies"/>
</authentication>

出于某种原因,Mobile Safari 浏览器会发送一个请求无 cookie 会话的标头,如果未设置该属性,它将默认使用会话令牌重写 url。由于某种原因,这并不总是有效,导致登录失败。

于 2013-03-18T20:19:56.537 回答
1

我希望没有人会介意我在这一篇上的后期贡献。我遇到了同样的问题:无法从 iPhone Safari 浏览器登录到我的 ASP.NET MVC 4 应用程序。我最终在我的开发机器上打开了相关端口,以允许我的 iPhone 访问在 IISExpress 中运行的应用程序实例,以便我可以调试它。

我在我的应用程序代码中设置了一个断点,并从我的手机发出了相关请求。然后,我将该标头内容与我知道正在运行的请求的标头内容(来自桌面浏览器)进行了比较。我发现没有与 iPhone 请求相关的 cookie 标头信息。

所以...这使我进入了我的 iPhone 的 Safari 设置页面。出于某种原因,我的隐私设置被设置为“接受 Cookie”为“从不”。我将其更改为“来自已访问”,它解决了我的问题。根据 Google 叔叔告诉我的内容,“来自已访问”是 iPhone 的默认设置。我想如果我们想支持“从不”的情况,那么我们就必须查看实现无 cookie 表单身份验证的路径(沿着这里讨论的路线)。

希望对某人有所帮助:)。

于 2013-05-23T17:12:07.917 回答
1

好的,我通过对响应缓存的一些蛮力解决了这个问题......

public void Application_PreSendRequestHeaders(Object sender, EventArgs e)
{
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
}

这会强制将响应头设置为 Cache-Control:no-cache强制 iOS6 下的 Safari 停止缓存 POST。

帽子提示https://stackoverflow.com/a/7087989/10573

于 2012-11-12T09:27:52.463 回答