跨多个浏览器共享会话对象

时间:2012-07-03 07:41:10

标签: asp.net

是否可以在多个浏览器中共享会话对象(如用户对象)?我的要求是,如果用户尝试在不同的浏览器(IE,Chrome或Fireforx)之间切换,应用程序应允许导航以及共享用户对象。

2 个答案:

答案 0 :(得分:1)

浏览器之间无法共享会话,浏览器使用会话cookie唯一地标识每个客户端,并将其存储在浏览器内存中。因此,不允许一个浏览器访问其他浏览器的内存,这使得无法在不同浏览器之间共享会话。阅读有关session cookies的更多信息可以使其更加清晰。

答案 1 :(得分:0)

IS 可能。但它需要您编写自己的SessionIDManager类:

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionidmanager.aspx

如果您创建自己的SessionIDManager,则决定如何确定请求是否属于特定会话。客户端IP至少应该是一个参数,某些特定于应用程序的密钥可以是另一个等等。返回的实际会话密钥可以是所有参数的散列的合适字符串表示(生成的会话ID 必须每个会话都是唯一的。)

完成SessionIdManager后,您可以在web.config

中将其挂钩
<sessionState mode="[mode]" ...
    sessionIDManagerType="[full type name of your class here]" ... />

所以可以完成。

但是,除非有一些非常有说服力的理由,否则我个人不会做这样的课程:

  • 很容易弄错并混淆会话 不同的用户。
  • 如果不同的用户通过同一代理访问您的网站会怎样?什么
    如果您站点前面有负载均衡器(=所有请求似乎 来自同一IP)。等等。

而且,也许最重要的是:

  • 它打破了用户对会话通常如何运作的期望......