0

在我的 asp.net Web 应用程序中,当用户登录时,我将 db 中的 isLogged 标志设置为 true。

当 Session 过期(120 分钟后)时,我使用 Session_End 方法设置 false isLogged 标志。

我在多种情况下测试此方法:

  • 当用户在没有点击注销按钮的情况下关闭浏览器时,在超时时间之后 session_end 完成他的工作。
  • 当用户锁定他的设备或他的设备进入待机状态时,也会发生同样的事情。

我的问题是有些用户如果不点击注销按钮就会“保持登录状态”。老实说,我不明白为什么当客户端设备未连接到网站时 session_end 会起作用。我认为服务器完成了 Session_end 工作,但如果这是真的,为什么有些用户没有工作?

原因可能是浏览器或设备类型(移动设备或非移动设备)?

4

1 回答 1

0

如果您为会话启用了滑动到期并且浏览器发出了一些永久的 AJAX 请求,那么只需打开浏览器窗口就可以使会话永远保持活动状态。至于会话结束事件的工作方式:

Session_OnEnd 子例程在调用 Abandon 方法或会话到期时运行。当 Timeout 属性指定的分钟数过去而没有为会话发出请求时,会话将过期。

于 2015-12-30T10:14:41.063 回答