Asp.net Forms AuthenitAction超时似乎不起作用,我做错了什么?

Asp.net Forms AuthenitAction超时似乎不起作用,我做错了什么?,asp.net,Asp.net,ASP.NET应用程序在20分钟后将用户踢出,即使它在Web.config中有以下内容,并且用户正在发布表单: <authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880"/> </authentication> 身份验证和会话状态是不同的实体。身份验证标记下的timeout属性设置身份验证cookie过期之前的时间(以分钟为单位)。实际上,您可以在Chrom

ASP.NET应用程序在20分钟后将用户踢出,即使它在Web.config中有以下内容,并且用户正在发布表单:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>

身份验证和会话状态是不同的实体。身份验证标记下的timeout属性设置身份验证cookie过期之前的时间(以分钟为单位)。实际上,您可以在Chrome浏览器中的开发者工具->资源->Cookies(.ASPXAUTH是默认名称)中查看cookie本身。通过将滑动过期设置为true,您将在每次经过身份验证的用户提交请求时续订cookie

会话状态控制会话到期前的时间量。再次,提交请求将重置计时器。在许多情况下,web应用程序将要求身份验证cookie有效且会话为当前会话,以便用户保持登录状态。出于安全原因,将会话超时设置为很长的值(超过几个小时)通常也是个坏主意。但是,如果您确实希望在不考虑活动的情况下长时间维护当前会话,则可以像以前一样设置超时值


在您的情况下,如果您希望用户即使在不活动的情况下仍保持登录状态,则听起来您确实需要将这两个超时值都设置为所需的时间量。

最好以分钟为单位进行设置!只是确认一下:你是说默认会话超时是将用户踢出的超时吗?因此,如果我将会话超时设置为50分钟,我甚至需要担心添加滑动过期吗?如果您将会话超时设置为50分钟(同时将身份验证超时保持为48小时),那么您的用户将能够在自动注销之前保持50分钟的非活动状态。我不会担心将滑动过期设置为真。如果将其保留为false,则表示无论活动如何,您都希望强制用户每2天重新验证一次。出于安全原因,这通常是可取的。这是否回答了您的问题?身份验证cookie和会话都必须是最新的,用户才能保持活动状态,但身份验证cookie并不是导致您出现问题的原因。我建议将此作为编辑,但是,既然你指的是48分钟而不是48小时,那么值得注意的是,超时值是以分钟为单位的,所以2880实际上是48小时。是的,站点开发人员的意图是使用40分钟左右的时间作为超时时间,他们可能弄错了数字。我只需要克服默认的20分钟超时。
<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" slidingExpiration="true"/>
</authentication>

<sessionState mode="InProc" cookieless="false" timeout="3000" />