访问aspx页面时如何生成唯一的会话ID

时间:2015-11-11 02:43:54

标签: asp.net vb.net session

我有一个包含多个aspx页面的网站,其中一个需要在用户进入时生成唯一的会话ID。此会话ID应该是及时结构化的字符串yyyymmddhhmmssms(年,月,日,小时,分钟,第二,milisecond)。因此,当用户访问此特定aspx页面时,用户将获得唯一的会话ID。然后,当单击完成按钮时,会话ID被触发,永远不会被重用。

1 个答案:

答案 0 :(得分:1)

这可能是可能的,但首先要做的是:时间戳不是唯一的,并且您不希望可以猜测sessionID。这就是默认SessionID是由加密随机数生成器生成的120位数的原因(详情here)。除非您和您的用户对整个世界都可以使用的会话内容感到满意,否则应该避免像时间戳这样的确定性内容。

有关会话状态安全性的更多信息是here

无论如何,我还没有意识到换出单个页面的会话ID的方法。您的浏览器会将会话cookie与主持人关联,而不是单个页面,因此它会将您的会话cookie发送到您网站上的每个页面。如果您未在自己网站上的其他任何地方使用会话,那么您可以使用以下内容:

  1. 使用Page directive's EnableSessionState属性禁用除相关网页之外的每个网页的会话状态。当用户单击“完成”按钮时,在处理程序中调用Session.Abandon。
  2. 通过实施和注册您自己的ISessionIDManager实施,使用您自己的会话ID生成器。但是,请不要使用时间戳作为您的ID。