Asp.net 在下列情况下,会话会发生什么情况?

Asp.net 在下列情况下,会话会发生什么情况?,asp.net,session,cookies,Asp.net,Session,Cookies,如果会话存储在proc中 用户登录,直接关闭浏览器,一小时后重新打开。他需要重新登录吗 如果web应用程序使用Cookie并且在用户浏览器上启用了Cookie 如果web应用程序使用持久性Cookie,并且在用户浏览器上启用了Cookie 如果web应用程序使用Cookie并且Cookie在用户浏览器上被禁用 如果web应用程序使用持久性cookies,并且在用户浏览器上禁用了cookies 如果会话存储在状态服务器中,并且情况相同,那么会发生什么?会话存储在服务器内存中(除非使用状态服务器或持

如果会话存储在proc中

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

  • 如果web应用程序使用Cookie并且在用户浏览器上启用了Cookie
  • 如果web应用程序使用持久性Cookie,并且在用户浏览器上启用了Cookie
  • 如果web应用程序使用Cookie并且Cookie在用户浏览器上被禁用
  • 如果web应用程序使用持久性cookies,并且在用户浏览器上禁用了cookies

  • 如果会话存储在状态服务器中,并且情况相同,那么会发生什么?

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

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

    如果用户禁用了Cookie,则应用程序无法使用Cookie。现在人们不再像90年代末那样担心cookie(许多“安全”人士提出警告,cookie可用于在计算机上存储各种东西,甚至病毒)。

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

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

    所有会话信息都存储在服务器端,会话标识符在后台用于决定应为每个请求调用哪一组信息(如果有)。这样我们就可以回答你的问题了

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

  • 如果web应用程序使用持久Cookie,并且在用户浏览器上启用了Cookie
  • 如果会话id存储在持久性cookie中,并且用户的浏览器通过将会话标识符cookie持久化到磁盘来尊重该id,则即使浏览器完全关闭并重新启动,也会发送会话标识符。但是,请注意,大多数web框架都有一个类似垃圾收集器的系统,用于删除在一定时间内显示任何活动的会话的数据。比如说,我的网站要求至少每4小时进行一次活动,以保持会话处于活动状态。如果我登录,收到带有会话ID的持久cookie,关闭浏览器,5小时后返回,那么我需要再次登录,因为即使会话ID cookie是持久的,我的会话信息也会从服务器上清除

  • 如果web应用程序使用Cookie并且在用户浏览器上禁用Cookie
  • 坏消息传来。您需要找到一种使用无Cookie会话的方法(为每个请求传递一个标识符作为参数),或者需要请求用户启用Cookie。这是没有办法的

  • 如果web应用程序使用持久Cookie,并且在用户浏览器上禁用Cookie

  • 与#3相同的情况。如果用户禁用了Cookie,则表示您运气不佳。要么他们需要启用Cookie(至少对于您的站点),要么您需要找到另一种方法在请求之间传递信息。

    “如果Cookie不可用,那么会话将无法工作”…意思是?在这种情况下会发生什么?用户是否必须在每次打开网站时登录?跨选项卡如何?这意味着系统无法将浏览器绑定到为特定浏览器会话存储的会话数据。如果用户登录,您可以在登录表单中为该用户设置会话变量,重定向到另一个页面,如果该页面在会话中检查用户名变量,则该页面将不存在。交叉标签是不相关的,因为它们都只是浏览器的实例,并且它们都共享一个cookie池。底线是,如果没有cookie,那么您就无法安全地完成会话。此外,请查看成员身份或标识系统,因为它们提供了比在会话中存储用户名更好的替代方案。如果会话不是存储在PROC中,而是单独存储,则情况是否相同?另外,当应用程序已经创建并且会话依赖cookies时,当用户禁用cookies时,它将如何工作?另一件事,如果用户在关闭浏览器时将浏览器设置为清除Cookie,持久Cookie中的数据是否丢失?@stylojack_10,我已经多年没有使用ASP.NET框架了,但在对InProc进行了简短搜索之后,会话是否存储在InProc中应该无关紧要。唯一能起作用的时间是在本地web服务器重新启动的情况下(在这种情况下,内存将被重置,所有会话数据都将丢失)。如我在回答中所述,如果用户禁用了Cookie,并且web应用程序依赖于Cookie,那么web应用程序将无法正常运行。此外,如果浏览器在退出时清除cookie,那么我们可以预期所有持久cookie都将丢失。