这几行代码的区别是什么?
<forms timeout="5" />
<membership userIsOnlineTimeWindow="5" />
<sessionState timeout="5" />
Forms (formsauthentication)用于身份验证,当超时时将注销用户。你可以通过设置SlidingExpiration属性为"true"来"防止"超时,如果需要,它会在用户活动(读请求到asp)时更新表单票。这将保持用户登录,而他是"活跃"在您的网站。
Membership用于用户验证,userIsOnlineTimeWindow是为了帮助您跟踪用户活动,所以当它运行完时,它将为该用户设置IsOnline属性为'false'。我发现的一件新事情是,当users isOnline设置时,也将更新表单票证,主要区别在于不自动更新本身,但只有当它的GetUser()或ValidateUser()方法运行时。
当会话超时时,将丢失在会话对象中找到的数据。注意以下行为:
设置Session timeout = 10分钟,Forms Authentication timeout = 8分钟。
用户使用表单身份验证登录到您的站点。
Session "clock"和Forms Authentication "clock"都开始运行。
假设您在会话中保留了一些站点操作所需的信息(例如,Session["userData"] = userData;)。
用户空闲9分钟。
8分钟会话超时,用户数据被清除。
在9分钟时,当用户试图在站点上执行一些活动时,您天真地引用会话["userData"]来获取他的信息。因为它是空的,他将得到一个空引用的错误500。
结论:保持表单认证超时小于会话超时