关于判断session是否为空的问题。

mike089 2010-02-26 10:18:03
if (Session["admin"] == null)
{
Response.Redirect("LoginRegis.aspx?page=Default.aspx");
}


当我登录了。Session["admin"]就有值了。然后就可以进入这个页面。

有用户跟我反应,管理页面可以随便进入。是不是他进入的时候这个Session["admin"]不等于null?

难道是其它人可以读取到我登录创建的Session["admin"] ?

服务器应该是为每一个用户创建一个Session["admin"] 的吧。

难道是只要有一个人创建了Session["admin"] 。其它人都可以进入这个页面了?
...全文
1058 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
当有用户“跟你反映”的时候,一定要让他到两台电脑上上去测试,否则可以不予理睬。

如果是两台电脑上出现的问题,那么显然是一个重大bug。不过如果你只是用你提供的代码,怎么可能呢?可能是其它地方的问题。
  • 打赏
  • 举报
回复
据说IE8的Tab修改了这个问题,默认地窗口中每一个Tab都运行在不同进程上。
  • 打赏
  • 举报
回复
引用楼主 mike089 的回复:
服务器应该是为每一个用户创建一个Session["admin"] 的吧。


这里的“用户”二字有个偷换概念嫌疑。简单地说,服务器为每一个浏览器进程创建一个Session环境(实际上完全是浏览器控制的,但是我们可以这个粗糙地理解)。

因此,在一个浏览器页面上,如果用户创建了同一进程的两个窗口,例如按Ctrl+N键,或者在IE7的Tab方式或者遨游浏览器等上在同一个浏览器窗口的不同Tab上在一个上登录而在另一个上不登录,这时候只要一个登录了那么另一个窗口也就显示的是这个登录用户身份,而在另一个窗口上登录也就重复覆盖了前一个登录用户。

因此,说“服务器是为每一个用户.....”这很容易出问题。有些用户硬要在一个浏览器进程上用两个用户分别登录,而且还要区分出“分别”,这显然是鸡蛋里挑骨头啦。
polarissky 2010-02-26
  • 打赏
  • 举报
回复
引用 3 楼 getian 的回复:
不会是Session的问题引起的,估计是其他地方的判断有问题。

楼主检查下相关验证的代码
xiezechang 2010-02-26
  • 打赏
  • 举报
回复
`
引用 3 楼 getian 的回复:
不会是Session的问题引起的,估计是其他地方的判断有问题。
jackyuen1 2010-02-26
  • 打赏
  • 举报
回复
恩,Session是独享的,每个用户分配一个,检查你的业务逻辑~!
getian 2010-02-26
  • 打赏
  • 举报
回复
不会是Session的问题引起的,估计是其他地方的判断有问题。
mxc1225 2010-02-26
  • 打赏
  • 举报
回复
用完了及时清空不行吗!?
if (Session["admin"] == null) 
{
Session.Abandon //销毁Session对象,释放内存
Session.Contents.Remove("mysession") //清除Session对象的内容,但Session对象任然存在
Session.Contents.ClearAll //清除所有Session对象的内容,有点狠了!看你自己需要!

clearall和removeall?
Response.Redirect("LoginRegis.aspx?page=Default.aspx");
}


或者
1在web.xml里设置session(失效时间)
<session-config>
<session-timeout>5 </session-timeout> //分
</session-config>
3手动让session失效
session.invalidate()
woshimaikou 2010-02-26
  • 打赏
  • 举报
回复
session 是独享的,每位登录用户都有一个自己的session,
application是共享的!

62,072

社区成员

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

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

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

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