我为我的私人页面创建了手动记录,
我有UserInfoClass
个string username
和int 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分钟但有时无法正常工作并重定向到记录页面。是我的算法有问题吗?它在安全问题上有问题吗?请告诉我你对这个算法的看法。 非常感谢
答案 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中。