我可以为会话设置20分钟超时,这意味着如果用户在20分钟内没有提出请求,他/她的会话就会到期。
<sessionState timeout="20" />
但我需要的是能够在一段时间后使会话失效,无论用户是否仍在发送请求。
例如,无论用户是否发送了其他请求,4小时后会话必须过期;这是为了防止恶意软件滥用默认的会话行为...
如何在ASP.NET中配置或实现它?
我希望会有配置设置,但我找不到一个?
非常感谢
答案 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"]
}
}
答案 2 :(得分:0)