1

从这篇文章http://www.codeproject.com/Articles/5892/Session-Management-in-ASP-NET我了解到会话存储在浏览器中的 cookie 中(假设 Cookieless=false)以及它是如何用于未来的通信以克服网络的无状态性质。我有一个疑问 - 由代码创建的会话(例如 Session["abc"]="test data")存储在哪里?它们是仅存储在服务器上还是也存储在 cookie 中(这不太可能)?如果它们存储在服务器上,它们存储在哪里?如何通过代码为特定用户创建会话?

提前致谢。

4

1 回答 1

1

Session["abc"]="test data" is Stored in RAM by default as for ASP.net

当请求“www.facebook.com/home”时,两个不同的 Facebook 用户都被发送到不同的页面,例如 user1 将有他的个人资料新闻,user2 将有不同的个人资料。

那么流程是什么-->

  • user1 登录 www.abc.com 。
  • 服务器将 sessionid 保存darw12sxa3towkoiuhztcf0c为 user1 浏览器中的 cookie。
  • 服务器映射darw12sxa3towkoiuhztcf0c到其内存中的 user1。
  • 接下来所有 user1 的 url 请求都会有这个 sessionid,所以服务器可以识别darw12sxa3towkoiuhztcf0c映射到 user1 并提供与他对应的页面。
  • 登录 www.abc.com 时的 user2 被分配了一个不同的 sessionid 比如说pvsc5msqma5nrusmdnn2y13n...等等。

一些信息

  • 与这个 sessionid 相对应的所有 Session 数据默认存储在 RAM 中,供 Asp.Net.Website 管理员可以将其更改为其他方式。
  • Sessionid 存储为与域名对应的 cookie。
  • 这些 Sessionid 是通过网络为每个 Web 请求传输的,因此它很容易受到攻击,因为中间人可以使用这些 sessionid,因此 HTTPS 出现并节省了一天的原因之一。

尝试使用 Edit this Cookie Chrome Extension 来查看和复制 cookie 从一台计算机到另一台计算机。

玩得开心。

于 2014-01-06T05:51:31.697 回答