【问题标题】:ASP.NET authentication cookies not stored when using jQueryMobile on iPad在 iPad 上使用 jQueryMobile 时未存储 ASP.NET 身份验证 cookie
【发布时间】:2011-06-02 09:45:32
【问题描述】:

我有一个使用 jQueryMobile 的 ASP.NET MVC2 应用程序。这是一个安全的应用程序,我在 MVC2 框架内使用 ASP.NET 身份验证。

我正在通过 web.config 使用标准身份验证:

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

我正在使用 Authorize 属性保护某些控制器:

[Authorize]
public class ClientController : Controller

我的所有网页都基于同一个母版页,该母版页具有如下顶级容器 div:

<div class="page" data-role="page">

这一切都可以在 Chrome 上完美运行。但是,在 iPad 上,身份验证不起作用。似乎身份验证 cookie 永远不会存储在客户端上。即使我输入了正确的凭据,iPad 也会继续显示登录页面。我也尝试将 Safari 接受 Cookie 设置为“始终”。

有没有人成功地在 iPad 上使用 ASP.NET MVC2 身份验证部署 jQueryMobile 应用程序?谢谢。

编辑: 好的,我已经确定 cookie 确实存储在客户端上,但似乎 jQueryMobile+Safari 以某种方式共谋不断显示登录页面,而不是将我重定向到应根据登录重定向显示的页面。

【问题讨论】:

    标签: asp.net asp.net-mvc forms-authentication jquery-mobile


    【解决方案1】:

    我相信我有答案。对于 iPad,需要专门设置 web.config 来强制使用 cookie。我在 web.config 中的身份验证设置现在如下所示:

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

    解决问题的是 cookieless="UseCookies" 条目。其默认值为 UseDeviceProfile。一定是 iPad 没有一致的 UseDeviceProfile 制度。在 iPad 上,有时有效,有时无效。不要问我为什么。它现在似乎一直在工作。

    【讨论】:

      【解决方案2】:

      我同意 Journeyman 的观点,我就是这么用的。但是,如果他们将网站添加到主屏幕,那么这些设置仍然不起作用。

      有些人声称在这种情况下他们不会存储 cookie。 见相关Q:iPhone/iPad WebApps don't allow cookies?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-22
        • 2011-08-19
        • 2017-12-31
        • 2011-02-28
        • 2017-03-30
        • 1970-01-01
        • 1970-01-01
        • 2018-03-30
        相关资源
        最近更新 更多