跨浏览器进程的会话cookie

时间:2009-11-18 21:57:20

标签: internet-explorer cookies session-state

是否可以跨浏览器会话(特别是Internet Explorer)使用会话cookie。我希望用户登录我的网站,从而获得一个cookie,当用户打开另一个IE进程时,该会话cookie会对用户进行身份验证。

目前,如果用户打开一个新的窗口或标签,就会发现它位于同一个过程中。

3 个答案:

答案 0 :(得分:0)

会话cookie在浏览器关闭后立即过期(这至少是PHP会话cookie的默认行为)。在Firefox中,启动两个进程,在您的站点上共享两个会话;与IE,它不会,可能是因为“会话”cookie不在进程之间共享。为了解决这个问题,您可以在一个cookie中处理您自己的会话ID,该cookie不具有0作为过期时间,但是将来会有一个时间戳(假设提前30天)。这样,cookie可能会在进程之间存在,但您必须依靠自己的ID来处理会话信息。

答案 1 :(得分:0)

所以你真的想要“在这台电脑上记住我”的功能吗?然后,您需要自己创建另一个具有较长生命周期的cookie,例如一年。在具有特定和预定义名称的cookie中,您应该设置一个长的,历史悠久的独特,难以猜测的自动生成的字符串(如哈希)。您将服务器端的相同值作为PK存储在数据库表中,以及用户ID(如果需要,还将用户IP作为可选安全性和用于自动清理的cookie TTL)。现在,在每个请求中检查cookie是否存在,然后使用与DB表中的cookie值关联的用户ID执行自动登录。

答案 2 :(得分:0)

在应用程序的Global.asax文件中输入此代码

Public Function Session_Start()
{
    HttpCookie myCookie = HttpContext.Current.Request.Cookies["ASP.NET_SessionId"];
    if(myCookie != null)
    {
         myCookie.Expires(3);
    }
}

这将使您的cookie保持活跃状态​​,因此您的会话将保持活跃状态​​。 如果这样做不能解决你的问题,那么另外使你的会话状态为“StateServer”而不是默认情况下的“InProc”,在web.config中