C# 手动日志算法会话超时

C# 手动日志算法会话超时,c#,asp.net-mvc,algorithm,session,C#,Asp.net Mvc,Algorithm,Session,我为我的私人页面创建了手动日志, 我有UserInfoClass,它有stringusername和intuserid实例。 这是我在日志页面中的算法: if(_username and _pass == true) { UserInfoClass obj; obj.username = _username HttpContext.Current.Session["myloginsession"] = obj HttpContext.Current.Ses

我为我的私人页面创建了手动日志, 我有
UserInfoClass
,它有
stringusername
intuserid
实例。 这是我在日志页面中的算法:

if(_username and _pass == true)
{
     UserInfoClass obj;
     obj.username = _username
     HttpContext.Current.Session["myloginsession"] = obj
     HttpContext.Current.Session.Timeout = 60
     Redirect to private page
}
私下里

page_load()
{
    if(session["myloginsession"] != null)
    {
    //do something
    }
    else
    {
    redirect to logging page
    }

}
我的会话超时有问题,我将其设置为60分钟,但有时它不能正常工作,并重定向到日志页面。是我的算法有问题吗?它在安全问题上有问题吗?请告诉我你对这个算法的看法。
非常感谢

将logininfo与null进行比较

page_load()
{
     if(session["LoginInfo"] != null)
     {
     //do something
     }
     else
     {
          redirect to logging page
     }

 }

另外,最好将会话超时放在web.config中。

您的会话密钥不一样

一是

"myloginsession"
另一个是

"LoginInfo"
我建议他们也一样

此外,建议超时时间不要超过20分钟

从Microsoft API网页

“指定服务器自动终止会话之前会话可以保持空闲的分钟数。默认值为10分钟。会话。超时没有硬编码限制。大多数Web管理员将此属性设置为8分钟。不应设置为超过20分钟(特殊情况除外)因为每个打开的会话都占用内存。它也不应设置为小于4分钟,因为客户端很少在这段时间内响应,从而导致会话状态丢失。
IIS 6.0:允许的最小值为1分钟,最大值为1440分钟。“

您的会话对象没有使用相同的
键<代码>会话[“myloginsession”]
vs
会话[“LoginInfo”]
@Matthew谢谢,你能再给我解释一下吗?很好,我错过了。试着在20分钟后将会话密钥重置为true,你不需要存储整整60分钟,在前20分钟结束后,你可以继续续订它