这些代码行之间有什么区别:
<forms timeout="5" />
<membership userIsOnlineTimeWindow="5" />
<sessionState timeout="5" />
非常感谢。
答案 0 :(得分:12)
表单(FormsAuthention)用于身份验证,超时时会注销用户。您可以通过将 SlidingExpiration 属性设置为“true”来“阻止”超时,并且如果需要,它将更新用户活动的表单票证(对asp的读取请求)。这将使用户在您的网站上“活跃”时保持登录状态。
Membership 用于用户验证, userIsOnlineTimeWindow 可帮助您跟踪用户活动,因此当用完时,它会设置 IsOnline < / strong>该用户的属性为'false'。我发现的一件新事情是,当用户isOnline设置时,还将续订表单票证,主要区别在于不续订本身自动但仅在其 GetUser()或 ValidateUser()方法运行时。
当会话超时时,您将丢失 Session 对象中的数据。就是这样。
答案 1 :(得分:0)
请注意以下行为:
您设置会话超时= 10分钟,表单身份验证超时= 8分钟。
用户使用表单身份验证登录您的站点。
Session&#34; clock&#34;和表格认证&#34;时钟&#34;开始跑步。
假设您在会话中保留了网站操作所需的一些信息(例如,会话[&#34; userData&#34;] = userData;)。
用户闲置9分钟。
在8分钟时,会话超时并清除用户的数据。
当用户尝试在网站上执行某些活动的9分钟时,您会天真地引用会话[&#34; userData&#34;]来获取他的信息。由于它为null,因此将为空引用获取错误500.
结论:保持表单身份验证超时短于会话超时。