我可以为会话设置 20 分钟超时,这意味着如果用户在 20 分钟内没有提出请求,他/她的会话就会过期。
<sessionState timeout="20" />
但我需要的是能够在一定时间后使会话过期,无论用户仍在发送请求。
例如,在 4 小时后,无论用户是否再次发送请求,会话都必须过期;这是为了防止恶意软件滥用默认会话行为......
如何在 ASP.NET 中配置或实现它?
我希望会有一个配置设置,但我找不到?
非常感谢
我可以为会话设置 20 分钟超时,这意味着如果用户在 20 分钟内没有提出请求,他/她的会话就会过期。
<sessionState timeout="20" />
但我需要的是能够在一定时间后使会话过期,无论用户仍在发送请求。
例如,在 4 小时后,无论用户是否再次发送请求,会话都必须过期;这是为了防止恶意软件滥用默认会话行为......
如何在 ASP.NET 中配置或实现它?
我希望会有一个配置设置,但我找不到?
非常感谢
此要求没有配置设置,因为它相当独特。
您可以通过在客户端首次连接时向客户端发出 cookie 来实现这一点 - 在每个请求上检查此 cookie,并在 4 小时过去后开始拒绝它。您可以将此开始时间存储在 cookie 或Session
变量中。
正如 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"]
}
}
这有一个代码示例,正是我想要的:
http://pooyakhamooshi.blogspot.co.uk/2012/10/how-to-implement-hard-session-expiry-in.html