C# 为什么一个新的IE6窗口让我用表单身份验证再次登录?

C# 为什么一个新的IE6窗口让我用表单身份验证再次登录?,c#,asp.net,forms-authentication,C#,Asp.net,Forms Authentication,我在asp.net应用程序中使用表单身份验证,并使用以下方法保护所有页面: deny user=* 当用户登录时,我使用: FormsAuthentication.RedirectFromLoginPage(UserName.Text, false); 现在,如果我在打开一个窗口并登录时使用IE6,它会工作,但是如果我打开一个新窗口,我必须再次登录。一个新的IE6窗口似乎会打开一个新的会话或cookie,我不确定如何避免这种情况?有多种方法。我认为对用户的影响应该尽可能小 您可以将上次登录或

我在asp.net应用程序中使用表单身份验证,并使用以下方法保护所有页面:

deny user=*
当用户登录时,我使用:

FormsAuthentication.RedirectFromLoginPage(UserName.Text, false);

现在,如果我在打开一个窗口并登录时使用IE6,它会工作,但是如果我打开一个新窗口,我必须再次登录。一个新的IE6窗口似乎会打开一个新的会话或cookie,我不确定如何避免这种情况?

有多种方法。我认为对用户的影响应该尽可能小

您可以将上次登录或上次数据库操作时间戳存储在数据库中。这样,您可以验证用户的最后一个操作是否在几分钟内完成。此外,您可以将用户名而不是密码存储在客户端的cookie中。下次客户端打开新会话时,您将知道用户名,在数据库上验证上一次数据库活动是否在几分钟内,并绕过登录义务

第二种方法涉及更改客户端浏览器的启动参数,以便新窗口共享会话。我不知道这是否在所有浏览器和版本上都可用,以及您是否有能力做到这一点

重新设计web应用程序,使新窗口不需要打开,除非它们位于打开的窗口内。如果它们是从现有的登录窗口打开的,则可以在查询字符串中发送哈希键,从而绕过登录过程


在这一点上,我想到的只是一些可能性。。如果您需要更多的可能性,只需询问:-

您的意思是拒绝用户=??*是指所有用户,而?表示匿名用户。

@blowdart:谢谢您的评论!我的意思是*,拒绝所有用户,除非他们登录。拒绝优先于允许。在我看来,我使用了asp.net的内置表单身份验证,所以有些我不需要管理coolike,不是吗?我只是想知道为什么新的IE6窗口没有将cookie发送到服务器端,服务器端会告诉asp.net用户是否已登录?