表单身份validation超时与sessionState超时

我有代码,我正在通过关于网站会话超时。 在web.config中我遇到了这个代码。

<authentication mode="Forms"> <forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" /> </authentication> <sessionState timeout="30" /> 

有谁知道一个人是否先于另一个人,以及他们有什么不同。 谢谢。

他们是不同的东西。 Forms Authentication Timeout(表单身份validation超时)值设置身份validationCookie设置为有效的时间(以分钟为单位),cookie将过期,用户将不再进行身份validation – 它们将被redirect到login页面自动 – 。 slidingExpiration=true值基本上是说在每个请求完成后,定时器被重置,只要用户在超时值内发出请求,它们将继续被authentication。 如果设置slidingExpiration=false那么无论用户是否在超时值内发出请求,身份validationCookie都将在value分钟数后过期。

SessionState超时值设置会话状态提供程序在特定会话中需要将数据保存在内存中(或正在使用的任何后备存储,SQL Server,OutOfProc等)的时间量。 例如,如果您使用示例中的值在Session中放置对象,则该数据将在30分钟后被删除。 用户可能仍然被authentication,但会话中的数据可能不再存在。 Session Timeout值始终在每个请求后重置。

从我所了解的他们是互相独立的。 通过保持会话超时小于或等于身份validation超时,可以确保任何用户特定的会话variables在身份validation超时后都不会持续(如果这是您的担心,那么在询问此问题时我认为是正常的题)。 当然,你必须在注销时手动处理会话variables的处理。

这是一个体面的回应,可以回答你的问题,或至less指出你在正确的方向:

  • 表单身份validation超时与会话超时

slidingExpiration = true的值基本上是说在每个请求完成之后,定时器被重置,只要用户在超时值内发出请求,他将继续被authentication。

这是不正确的。 如果超时时间的一半已经过去,authenticationcookie超时只能被重置。

请参阅https://support.microsoft.com/de-ch/kb/910439/en-us或https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -时间到/

不同之处在于一个(Forms超时)与authentication用户有关,而另一个(会话超时)与caching数据存储在服务器上的时间有关。 所以他们是非常独立的东西,所以一个人不会优先于另一个。

  <sessionState timeout="2" /> <authentication mode="Forms"> <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/> </authentication> 

这个configuration每隔两分钟就会把我发送到login页面,这似乎在反驳以前的答案