【问题标题】:Asp.net Forms Authentication Cookie IssueAsp.net 表单身份验证 Cookie 问题
【发布时间】:2014-06-04 23:37:20
【问题描述】:

我在发布到 Azure 中的暂存服务器时遇到了一个奇怪的问题。在此部署中,我有一个使用 SQL 成员资格的 Web 应用程序。当我尝试通过我的登录页面登录时,我被重定向回登录页面。这是一个 .NET 4.0 应用程序。

使用 Firebug 的网络面板,我可以看到当我点击输入时,表单已发布,并且响应标头具有我的身份验证票证的 set-cookie 属性。它出现了两次。

.ASPXAUTHTEST=27D254F0AEEACB.........; domain=cloudapp.net; expires=Thu, 05-Jun-2014 05:29:24 GMT; path=/; HttpOnly

当表单发布时,cookie 被设置,我在 Firebug 中看到我重定向到我的默认 URL。当我点击默认 URL 时,cookie 不存在,所以我立即注销。

这是我正在使用的配置。

<authentication mode="Forms">
      <forms cookieless="UseCookies" enableCrossAppRedirects="false" loginUrl="~/Default.aspx" name=".ASPXAUTHTEST" slidingExpiration="true"
        timeout="360" requireSSL="true" defaultUrl="~/Application/Index.aspx" protection="All" path="/" domain="cloudapp.net"/>
</authentication>

奇怪的是,我在生产环境中进行了相同的部署,并且可以正常工作。我已尝试再次重新部署整个实例(新 VM 等)。这没有奏效。我也尝试过部署到新的操作系统版本,但没有奏效。

我添加了一些日志代码来查看发生了什么,但它使我得出与 Firebug 相同的结论,即未在浏览器中设置 cookie。它与浏览器无关,因为我也尝试过 Chrome 和 IE。

我最近从 Azure SDK 1.6 升级到 2.1。

有人有什么建议吗?

【问题讨论】:

  • 您的登录网址也是您的 default.aspx 吗? loginUrl="~/Default.aspx"
  • 域实际上是“cloudapp.net”,您的 SSL 是否适用于该域?
  • 我的default.aspx页面也是我的loginUrl。暂存域是 cloudapp.net(Azure 的默认域)。我为requireSSL尝试了真假,没有任何运气。

标签: google-chrome firefox azure cookies sqlmembershipprovider


【解决方案1】:

经过进一步研究,我认为原因可以归因于 Mozilla 的公共后缀列表以及使用它们来限制某些域上的 cookie 的浏览器。该网站在 IE 和 Safari 上运行。

当我改变时:

domain="cloudapp.net"

domain="{guid}.cloudapp.net"

它适用于所有浏览器。

This StackOverflow 响应总结了它。

您也可以前往Public Suffix List site

【讨论】:

    猜你喜欢
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多