【问题标题】:ASP.NET session vs session state and cookies vs cookie lessASP.NET 会话与会话状态和 cookie 与 cookie 少
【发布时间】:2015-07-23 05:59:39
【问题描述】:

请帮我看看我的理解是否正确。

  1. ASP.NET 会话存储在 Web 服务器上,不使用任何 cookie。

  2. 如果 ASP.NET 配置为使用带有 webconfig->会话状态的会话:那么我们可以将其配置为 stateconnection 或 sqlconnection。

  3. 如果 ASP.NET 配置为使用会话状态(作为 stateconnection 或作为 sqlconnection),那么当用户在代码中使用会话时,将使用客户端计算机上的 cookie,除非您在 webconfig 中指定 cookieless=true

  4. 如果我们使用<sessionState cookieless="true" />,那么默认状态连接设置为localhost

【问题讨论】:

    标签: asp.net session session-state


    【解决方案1】:

    当在许多动态网站中谈论 Session 时,您希望在 HTTP 请求之间存储用户数据(因为 http 是无状态的,并且您不能以其他方式将请求与任何其他请求相关联),但是您不希望该数据在客户端可读/可编辑,因为您不希望客户端在不通过您的(服务器端)代码的情况下使用该数据。

    解决方案是存储该数据服务器端,给它一个“id”,并让客户端只知道(并在每个 http 请求时传回)该 id。好了,会话实施了。或者您可以将客户端用作方便的远程存储,但您会加密数据并将秘密保存在服务器端。

    当然还有其他方面需要考虑,比如你不希望人们劫持其他人的会话,你希望会话不是永远持续而是过期等等。

    会话状态包含与服务器的特定会话(由特定客户端/浏览器/机器)有关的信息。这是一种跟踪用户在网站上所做的事情的方法......跨多个页面......在网络的无状态中。例如特定用户购物车的内容是会话数据。 Cookie 可用于会话状态。

    Cookies 是一小段文本,存储在客户的计算机上,仅供设置 Cookie 的网站使用。这允许 web 应用程序为用户保存信息,然后在需要时在每个页面上重新使用它。 每个会话都会有 SessionID。会话 ID 是一个唯一编号,服务器在特定用户访问(会话)期间分配给他。并且默认情况下,会话 ID 附加到 cookie,并且该 cookie 将在其请求/响应期间从客户端共享到服务器(以及服务器到客户端)。服务器将根据从 cookie 中检索到的会话 id 来识别会话。

    关于cookieless,如果您的浏览器不支持cookie 或禁用,则将使用cookieless。由于是 Cookieless,asp.net 无法创建 cookie 来保存会话 id。相反,会话 ID 将在查询字符串中传递。

    【讨论】:

    • 如果您按照我的问题给出逐点回答将会很有帮助
    【解决方案2】:

    Session : 存储在服务器(内存或数据库)上,Web 应用程序中的所有页面都可以使用其中的数据。

    会话状态:当用户在 Web 应用程序中导航页面时,为用户存储和检索值。

    Cookies :作为包含非敏感数据的文件存储在客户端,但包含用户收藏和偏好等数据。

    无Cookie:在 URL 查询字符串中传递会话 ID,而不是将其存储在 cookie 中,以防您希望用户阻止或删除 cookie。

    【讨论】:

      猜你喜欢
      • 2016-11-08
      • 2011-09-09
      • 1970-01-01
      • 2017-01-11
      • 2010-09-26
      • 1970-01-01
      • 2016-04-24
      • 2013-02-07
      • 2012-09-06
      相关资源
      最近更新 更多