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



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

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

这是

可能的。但它需要你编写自己的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)。等等。

而且,也许最重要的是:

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

最新更新