缺少asp.net表单身份验证cookie

时间:2012-10-26 12:15:52

标签: asp.net forms-authentication

我们有一个奇怪的情况。我们在web.config中有以下内容:

<authentication mode="Forms">
     <forms name="ASPDNSFGUID" loginUrl="SignIn.aspx" timeout="525600" /></authentication>

这是一个电子商务应用,Cookie用于帮助我们确保在登录后保留购物篮的内容,但这不起作用。我们之前已经使用过这几十次而没有问题。

该网站托管在两个位于土狼点负载均衡器后面的前端Web服务器上。我们注意到,当通过HTTPS查看网站时,cookie就在那里,身份验证类型就是表单。但是,当我们浏览非安全时,cookie丢失并且未设置身份验证类型。我们知道这一点,因为我们创建了一个页面来打印出我们的所有标题。

有没有人对可能的原因有任何想法?我们想知道负载均衡器是否正在剥离cookie,但我们没有证据证明这一点,只是一种直觉感觉

2 个答案:

答案 0 :(得分:0)

  

我们注意到,当通过HTTPS查看网站时,cookie就是   在那里,身份验证类型是表单。但是,当我们浏览时   非安全,cookie丢失,身份验证类型不丢失   组。

当您在requireSSL="true"标记上设置<forms >时会发生这种情况。

您如何尝试在domain="yourdomain.com"代码中声明<forms >,而不使用子域www.,因为这可能会影响Cookie。

首先尝试这个

<forms name="ASPDNSFGUID" domain="yourdomain.com" loginUrl="SignIn.aspx" 
          timeout="525600" />

然后尝试查看是否已通过编程方式设置requireSSL。

答案 1 :(得分:0)

cookie是否设置为https,如果是,则在同一域上是https和http,但只有协议不同?即https://www.somesite.comhttp://www.somesite.com

因为,如果他们有不同的子域,除非您在web.config中的<forms>元素中指定domain =“somesite.com”,否则您将遇到问题