SessionID不理解的地方

zw520lb 2016-05-13 12:26:25
SessionID是服务器生成的,用以区分用户的。存放在服务器内存和客户机的Cookie里面。

当用户发出请求时,服务器将Cookie里面记录的SessionID和服务器内存中的SessionID进行比对,从而找到这个用户对应的Session。

那为什么在同一个浏览器,我用的是chrome,当我以用户A登陆后看到的SessionID值如果是mt2kaazw4vmmbtg0ypkz4hbp,
当我不关闭浏览器,退出用户A,再用用户B登陆进去,SessionID的值还是mt2kaazw4vmmbtg0ypkz4hbp。

既然服务器是根据这个值去找用户对应的session,那不同的用户登陆,照理来说值应该不同才对啊?
...全文
155 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是飞云 2016-05-13
  • 打赏
  • 举报
回复
请留意SessionID这个词,ID是着重点。 这是一个索引查找键,相对的是当前会话而不是某个什么用户之类的东西,会话依赖的是浏览器Cookie,如果你的Cookie不被清理服务器可以读取到这个值,那么是不会给你生成一个新的ID,换句话说,假如你需要改变SessionID,你只需要将SessionID对应的Cookie删除掉,才可以进行一个“刷新”。 无论你是用Session还是Cookie,那都是你自己的设计自己的逻辑,和服务器没有关系。SessionID的存在只是为了让程序能够找到当前会话,并不参与所谓的登录。
风吹蛋蛋飘~ 2016-05-13
  • 打赏
  • 举报
回复
要知道session是以cookie形式返回给浏览器的,你就懂了
肖无疾 2016-05-13
  • 打赏
  • 举报
回复
同一个浏览器,同一个SessionID,除非Session.Abandon()
刘欣的博客 2016-05-13
  • 打赏
  • 举报
回复
关于登陆session: SRM系统的做法,用后面的帐号覆盖前面的帐号,在一个session中。 OA系统的做法,遇到session中有一个帐号,阻止后面的登陆。 我们暂时借鉴SRM的做法。 我试了一下,淘宝也是这样地
我是飞云 2016-05-13
  • 打赏
  • 举报
回复
引用 2 楼 ph3405 的回复:
是不是A退出时,要手工删除A的cookie? 然后B登录,添加B的cookie? 不过我好想是直接只使用SESSION,没管过cookie。。。
你只管你的逻辑,别去考虑这个。 如果想彻底删除当前会话所有的session信息,那么你删除掉本地的cookie是可以达到效果的。
  • 打赏
  • 举报
回复
引用 2 楼 ph3405 的回复:
是不是A退出时,要手工删除A的cookie? 然后B登录,添加B的cookie? 不过我好想是直接只使用SESSION,没管过cookie。。。
只能去手工删除。
  • 打赏
  • 举报
回复
当你打开多个chrome窗体(进程),一个窗口中可以打开有多个页面,你会发现SessionID跨进程共享的。那么你如果在一个窗口你改变了 SessionID,你会发现其它窗口刷新之后的“登录用户”也跟着变了。 所以,无法同时模拟两个用户访问网站。
  • 打赏
  • 举报
回复
引用 楼主 zw520lb 的回复:
当用户发出请求时,服务器将Cookie里面记录的SessionID和服务器内存中的SessionID进行比对,从而找到这个用户对应的Session。
这个描述不完善,甚至可以说不正确。当用户发出请求时,服务器首先判断Cookie里边是否有SessionID,如果没有则随机产生一个,如果有了才会进行上述操作。 那么接下来,对于chrome浏览器来说,当你打开一个chrome页面的时候,你会发现windows程序管理器里边可以看到实际上后台有好几个chrome进程。而当你关闭浏览器的时候,你会发现chrome进程也不退出。chrome很“坏”,它为了让用户感觉似乎比较快,实际上滥用了windows资源,抢占了windows资源。 单个chrome进程不但会根本不顾w3c的“每个进程最多只应该使用两个线程来访问web服务器”的禁令(滥用线程的目的是为了让用户感觉chrome的页面加载速度比别的浏览器更快),并且还启动多个chrome进程、用更多的线程来共享处理。 chrome不释放进程,在多个浏览器进程之间共享SessionID,那么内存中的cookie也就不会释放。
ph3405 2016-05-13
  • 打赏
  • 举报
回复
是不是A退出时,要手工删除A的cookie? 然后B登录,添加B的cookie? 不过我好想是直接只使用SESSION,没管过cookie。。。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧