在以下情况下会话会发生什么?

时间:2016-02-09 13:46:03

标签: asp.net session cookies

如果会话存储在proc

用户登录后,直接关闭浏览器并在一小时后重新打开。他需要再次登录吗?

  1. 如果Web应用程序使用cookie并在用户浏览器上启用了cookie ...
  2. 如果网络应用程序使用持久性 Cookie,则会在用户浏览器上启用Cookie ...
  3. 如果网络应用程序使用Cookie且用户浏览器已禁用
  4. ,则<... li>
  5. 如果网络应用程序使用持续 Cookie,并且用户浏览器已禁用
  6. 如果会话存储在状态服务器中并且情况相同,那么会发生什么?

2 个答案:

答案 0 :(得分:0)

会话存储在服务器内存中(除非使用状态服务器或持久性存储),但依赖于cookie来标识会话。如果cookie不可用,则会话将无法工作,因为无法识别用户。无Cookie会话可用于解决此问题。建议不使用无Cookie会话,因为它们可能会被网址中的会话标识符劫持。

如果没有在cookie上设置过期,那么一旦用户关闭所有浏览器实例(它们共享内存)而不是通过网站访问的实例,它就会丢失。

如果用户禁用了Cookie,则应用程序无法使用Cookie。人们现在并没有像90年代后期那样对cookie感到担心(许多“安全”人士都警告说,cookie可以用来存储计算机上的各种东西,甚至是病毒)。

答案 1 :(得分:0)

创建会话时(假设它是正常会话),会向浏览器发送一个cookie,如下所示:

SESSION_ID=437b930db84b8079c2dd804a71936b5f

如果会话标识符(上例中的437b930db84b8079c2dd804a71936b5f )作为请求参数而不是cookie传递,则可以在没有cookie的情况下使用会话;然而,这种情况并不常见,通常被认为是不好的做法。

所有会话信息都存储在服务器端,会话标识符在幕后使用,以决定应为每个请求调用哪组信息(如果有)。因此,我们会回答您的问题。

  
      
  1. 如果Web应用程序使用cookie并在用户浏览器上启用了cookie ...
  2.   

如果网络应用使用了Cookie并且在浏览器上启用了Cookie,则应该没有问题。但是,使用标准会话实现时,cookie将是非持久性的,因此如果用户完全关闭浏览器的所有实例,则需要再次登录。

  
      
  1. 如果Web应用程序使用持久性cookie并在用户浏览器上启用了cookie ...
  2.   

如果session-id存储在持久性cookie中,并且用户的浏览器通过将会话标识符cookie持久保存到磁盘来确定会话标识符,则即使浏览器完全关闭并重新启动,也会发送会话标识符。但是,请注意,大多数Web框架都有一个类似垃圾收集器的系统,可以删除在一定时间内显示任何活动的会话的数据。因此,举例来说,假设我的网站至少每4小时需要一次活动,以保持会话活跃。如果我登录,使用我的会话ID接收持久性cookie,关闭我的浏览器,并在5小时后回来,那么我将需要再次登录,因为我的会话信息已经从服务器清除,即使我的会话ID cookie是持久的

  
      
  1. 如果Web应用程序使用cookie并且在用户浏览器上禁用了cookie ...
  2.   

坏消息。您将需要找到使用无Cookie会话的方法(将标识符作为每个请求的参数传递),或者您需要要求用户启用cookie。没有办法解决这个问题。

  
      
  1. 如果Web应用程序使用持久性cookie并且在用户浏览器上禁用了cookie ...
  2.   

与#3相同的情况。如果用户禁用了cookie,那你就不走运了。他们需要启用cookie(至少为您的网站),或者您需要找到另一种方式来在请求之间传递信息。