0

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

<sessionState timeout="20" />

但我需要的是能够在一定时间后使会话过期,无论用户仍在发送请求。

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

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

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

非常感谢

4

3 回答 3

1

此要求没有配置设置,因为它相当独特。

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

于 2012-10-31T13:04:38.003 回答
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"]
    }
}

在这里检查

于 2012-10-31T13:29:26.417 回答
0

这有一个代码示例,正是我想要的:

http://pooyakhamooshi.blogspot.co.uk/2012/10/how-to-implement-hard-session-expiry-in.html

于 2012-10-31T13:57:48.623 回答