使用AJAX - 关于会话与表单身份验证超时的基本问题

时间:2011-01-11 21:51:56

标签: ajax forms authentication

所以我使用AJAX为客户提供考试模拟器,每个模拟考试大约需要2个小时。我意识到我不太了解会话及其与表单身份验证的关系。

  • 问题:在考试过程中,AJAX将访问代码,触发Page_Load事件。因此,这是否意味着sessionState超时值和Forms身份验证超时值都将被重置?

2 个答案:

答案 0 :(得分:1)

每次向应用程序发送请求并且当前会话仍然有效时,会话超时将被续订。

表单身份验证可以通过两种方式工作。您可以让用户登录一段固定的时间或使用滑动过期。例如:

<authentication mode="Forms">
    <forms defaultUrl="~/Default.aspx"
        loginUrl="~/Login.aspx"
        slidingExpiration="false"
        timeout="120" />
</authentication>

以上将表单身份验证超时设置为120分钟,但也禁用了滑动到期slidingExpiration="false"。这将在两个小时过期后将用户踢出。

  

FormsAuthentication.SlidingExpiration Property (MSDN Library)

答案 1 :(得分:0)

虽然它可能取决于管理会话的服务器代码,但一般答案是“是”。 AJAX请求(XmlHttpRequest)将传递浏览器cookie,允许服务器将请求与会话相关联,从而重新设置计时器。

如果您通过URL而不是Cookie管理会话,则需要确保您的AJAX请求符合URL需求,并将session_id与请求一起传递。