如何在ASP.NET中实现或配置硬会话到期?

时间:2012-10-31 13:00:05

标签: asp.net session web-config timeout session-state

我可以为会话设置20分钟超时,这意味着如果用户在20分钟内没有提出请求,他/她的会话就会到期。

<sessionState timeout="20" />

但我需要的是能够在一段时间后使会话失效,无论用户是否仍在发送请求。

例如,无论用户是否发送了其他请求,4小时后会话必须过期;这是为了防止恶意软件滥用默认的会话行为...

如何在ASP.NET中配置或实现它?

我希望会有配置设置,但我找不到一个?

非常感谢

3 个答案:

答案 0 :(得分:1)

此要求没有配置设置,因为它非常独特。

您可以通过在首次连接时向客户端发出cookie来实现此目的 - 在每个请求中检查此cookie并在4小时后开始拒绝它。您可以将此开始时间存储在Cookie或Session变量中。

答案 1 :(得分:0)

如Oded所述,您还应该在会话开始事件的会话中存储第一个登录时间。当你正在阅读会话时检查时间并使用Session.Clear();

以及检查会话开始时间使用全局属性访问它的简便方法。

public User CurrentUser
{
    get 
    {
         User user = (User)Session["CurrentUser"];
         if (user.startTime > "4 hours") // you can do it what ever you want.
             Session.Clear(); //or .Abandon(); [Check Here][1]

         return (User)Session["CurrentUser"]
    }
}

Check Here

答案 2 :(得分:0)