Asp.net表单身份验证Cookie问题

时间:2014-06-04 23:37:21

标签: google-chrome firefox azure cookies sqlmembershipprovider

在发布到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。当我点击默认网址时,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>

奇怪的是,我在Production中具有相同的部署,并且它可以正常工作。我尝试过再次重新部署整个实例(新VM等)。这还没有奏效。我也尝试过部署到一个新的操作系统版本,但是没有用。

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

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

有人有任何建议吗?

1 个答案:

答案 0 :(得分:0)

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

当我改变时:

domain="cloudapp.net"

domain="{guid}.cloudapp.net"

适用于所有浏览器。

This StackOverflow响应总结了它。

您也可以前往Public Suffix List site