MVC管理会话

时间:2016-04-15 19:14:18

标签: asp.net asp.net-mvc security asp.net-mvc-4

我正在使用MVC应用来管理身份验证。我遇到的问题是chrome,因为它实际上从未杀死会话,因为默认情况下它会在后台运行后在后台运行。我不想强制所有最终用户更改此设置,因为它会杀死环聊等等。所以我想知道我是否可以使用任何标准的web.config设置来处理这个或者我是否需要进行ajax轮询间隔继续更新cookie过期?

1 个答案:

答案 0 :(得分:0)

ASP.NET会话由客户端http会话cookie和服务器会话存储提供程序两个组件组成。假设用户具有SessionId 1.如果从服务器删除会话1,则用户返回并使用SessionId创建新会话1.如果用户删除会话cookie,则服务器将继续运行会话1.

您要求的通常是不可能。当用户退出您的网站或浏览器时,您无法强迫用户向您的服务器发送请求。 javascript beforeUnload事件在某些情况下会允许您在某些情况下向/sign-off发送请求。明显的限制因素是没有网络访问=没有消息。

孤立会话的标准解决方案是用于清除它们的会话清理策略。一些开发人员选择使用持久存储来完全消除清理,使购物车永远不会消失。

唯一能达到目标的合理解决方案(仍然是过度杀伤力)。您使用SingalR进行用户与服务器的持久连接,然后从服务器ping它们。如果连接无法响应,则放弃会话。这将是一个脆弱的过程,如果您不确定用户是否断开连接,您将收到许多用户的支持电话,他们想知道为什么他们在手机上浏览您的网站时会不断注销。