【发布时间】:2012-04-12 10:46:46
【问题描述】:
假设我在 web.config 中使用了类似的东西
<authentication mode="Forms">
<forms
loginUrl ="~/HomeLogin.aspx"
cookieless= "AutoDetect"
slidingExpiration="true"
timeout="10"
protection ="All"
/>
</authentication>
如果slidingExpiration 设置为true(默认值),每次FormsAuthenticationModule 对用户进行身份验证时,它都会更新票证的到期时间。如果设置为 false,则不会在每个请求上更新到期时间,从而导致票证在首次创建票证后的超时分钟数后过期。
注意: 身份验证票证中存储的到期时间是绝对日期和时间值,例如 2008 年 8 月 2 日上午 11:34。此外,日期和时间是相对于 Web 服务器的本地时间的。这个设计决策可能会对夏令时 (DST) 产生一些有趣的副作用,即美国的时钟提前一小时(假设 Web 服务器托管在观察夏令时的区域设置)。考虑在 DST 开始时间(即凌晨 2:00)附近有 30 分钟到期的 ASP.NET 网站会发生什么。想象一下,一位访问者在 2008 年 3 月 11 日凌晨 1:55 登录网站。这将生成一个表单身份验证票证,该票证将于 2008 年 3 月 11 日凌晨 2:25(未来 30 分钟)到期。但是,一旦凌晨 2:00 滚动,由于 DST,时钟会跳到凌晨 3:00。当用户在登录六分钟后(凌晨 3:01)加载新页面时,FormsAuthenticationModule 会注意到票证已过期并将用户重定向到登录页面。
这是一个可能导致问题的实例。任何人都可以指出这种方法的任何此类缺点。我有兴趣了解它。
谢谢
【问题讨论】:
-
您是问
slidingExpiration="true"的缺点还是相反的缺点?
标签: asp.net forms-authentication