是什么在ASP.Net Session.Abandon()和Session.Clear()有什么区别?
-
26-09-2019 - |
题
是什么在ASP.Net?
Session.Abandon()
和Session.Clear()
之间的差 解决方案
Session.Abandon()
将结束当前会话。 Session_End
将被发射以及所述下一个请求将触发事件Session_Start
Session.Clear
将刚刚清除会话数据和会话将保持存活。
会话ID将保持不变在两种情况下,只要浏览器没有关闭。
<强>概括地说:强>
Session.Abandon();
取消当前Session
。
Session.Clear();
从Session
状态清除所有值。
其他提示
Session.Abandon()
会破坏/杀死整个会话。
Session.Clear()
中移除了/清除会话数据(即从当前会话的键和值),但是该会话将活着。
相较于Session.Abandon()方法,Session.Clear()不创建新的会话,它只是使会话中的所有变量设置为NULL。
会话ID将保持在这两种情况下相同,只要浏览器没有关闭。
有些事情要在这里从我的经验说明:
Session.Abandon()
并不能否定当前会话。如果重播一些旧的请求执行罚款。
但是,你打电话后,设置废弃会话的内容词典都没有永久的影响。接下来的请求获得了一个全新的会话词典和与你以前的更改它(即使你通过重放先前的请求使用相同的会话ID)(在已调用的方法)的存在。
因此,似乎完全Session.Abandon()
停止整个会话的持久性,而Session.Clear()
只删除其数据。
和,另外,如果你需要,以确保从重放攻击你的应用程序,你应该增加一些逻辑,用于验证会话和不依赖于任何这些内置的方法。这些似乎仅仅是用来管理会话数据的持久性,而不是为保护您的应用程序。
不隶属于 StackOverflow