手动记录算法会话超时

时间:2014-01-27 21:35:47

标签: c# asp.net-mvc algorithm session

我为我的私人页面创建了手动记录, 我有UserInfoClassstring usernameint userID个实例。 这是我的日志记录页面中的算法:

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分钟但有时无法正常工作并重定向到记录页面。是我的算法有问题吗?它在安全问题上有问题吗?请告诉我你对这个算法的看法。 非常感谢

2 个答案:

答案 0 :(得分:1)

你的会话密钥不一样。

一个是

"myloginsession"

另一个是

"LoginInfo"

我建议他们一样。

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

来自Microsoft API网页

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

答案 1 :(得分:0)

将logininfo与null进行比较。

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

 }

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