我有关于网站会话超时的代码。在 web.config 我遇到了这段代码。
<authentication mode="Forms">
<forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>
<sessionState timeout="30" />
有谁知道一个是否优先于另一个,以及它们有何不同。谢谢。
我有关于网站会话超时的代码。在 web.config 我遇到了这段代码。
<authentication mode="Forms">
<forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>
<sessionState timeout="30" />
有谁知道一个是否优先于另一个,以及它们有何不同。谢谢。
它们是不同的东西。Forms Authentication Timeout值设置身份验证 cookie 设置为有效的时间(以分钟为单位),这意味着在value
几分钟后,cookie 将过期并且用户将不再进行身份验证 - 他们将被重定向到登录自动翻页。该slidingExpiration=true
值基本上是说只要用户在超时值内发出请求,他们就会继续进行身份验证(更多详情SessionState
timeoutvalue 设置会话状态提供程序为特定会话在内存(或正在使用的任何后备存储、SQL Server、OutOfProc 等)中保存数据所需的时间量(以分钟为单位)。例如,如果您使用示例中的值将对象放入 Session 中,则此数据将在 30 分钟后删除。用户可能仍然通过身份验证,但 Session 中的数据可能不再存在。Session Timeout
每次请求后始终按照此处和此处的建议重置该值(可能需要 cookie;vs 无 cookie)
SlidingExpiration=true 值基本上是说每次请求后,定时器都会被重置,只要用户在超时值内发出请求,他就会继续被认证。
这是不正确的。仅当超时时间已过一半时,才会重置身份验证 cookie 超时。
参见例如https://support.microsoft.com/de-ch/kb/910439/en-us或https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -暂停/
据我了解,它们是相互独立的。通过保持会话超时小于或等于身份验证超时,您可以确保在身份验证超时后不会保留任何特定于用户的会话变量(如果这是您的问题,我认为这是正常的问题)问题)。当然,您必须在注销时手动处理会话变量。
这是一个不错的回答,可以回答您的问题或至少为您指明正确的方向:
区别在于一个(表单超时)与验证用户有关,另一个(会话超时)与缓存数据在服务器上存储多长时间有关。所以它们是非常独立的东西,所以一个不会优先于另一个。
<sessionState timeout="2" />
<authentication mode="Forms">
<forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
</authentication>
此配置每两分钟将我发送到登录页面,这似乎与之前的答案有争议
对于遇到此问题的任何人,请参阅 MS 的此文档 - 它有关于 FormsAuthentication Timeout 设置的非常好的详细信息。
该文档详细解释了 bmode 在 Accepted Answer 中所做的评论 - 关于 Persistent Cookie (Session vs Expires)
不同之处在于一个(表单超时)必须对用户进行身份验证,另一个(会话超时)与缓存数据在服务器上存储多长时间有关。所以它们是非常独立的东西,所以一个不会优先于另一个。