我想我理解ASP.NET的“会话”和“表单身份验证”之间的区别。 Session主要用于存储特定于该用户会话的信息(可能是搜索过滤器的状态),并且表单身份验证用于记住他们应该可以访问某些内容。
我的问题是,为什么表格认证超时比会话超时更长?实际上,默认情况下,web.config将表单身份验证的超时设置为多更长。
以下是我看到的两个场景:
null
。null
- 登录时 - 并且可以在必要时将其初始化。为什么情景1)会更加可取?我错过了什么吗?
答案 0 :(得分:5)
事情是会话超时是一个比另一个更关键的设置。将身份验证超时设置为很长时间不会影响Web应用程序的服务器资源。但是如果你将会话超时设置为很长时间,这可能会导致高额赌注下的内存问题。
你的陈述是正确的。作为开发人员,我更喜欢2比1.但是有一种简单的方法来处理会话过期。看看这个SO question。其中一个答案可以很好地解决会话到期问题。
protected void Session_Start(Object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated)
{
FormsAuthentication.SignOut();
Response.Redirect("~/SessionEnd.aspx");
}
}
这样您就可以在一个地方处理过期的会话。