【发布时间】:2011-08-04 09:11:59
【问题描述】:
我在我的 asp.net 4.0 应用程序(从 .NET 1.1 升级)中使用 Forms 身份验证。我显式地创建了 FormsAuthenticationTicket 对象,然后对其进行加密(使用 FormsAuthentication 方法),并将其以 cookie 的形式发送给客户端。我使用 FormsAuthentiation.RenewTicketIfExpired() 来设置身份验证 cookie 的滑动过期时间。
我可以使用 Fiddler 找出在 FormsAuthenticationTicket 超时中途发布的新会话 cookie。
如果表单验证超时 = 2 分钟,会话超时 = 20 分钟
即
hh:mm:ss
10:00:00 用户登录
10:01:10 回发发生
然后将重新创建一个新会话并注销。但我将会话设置为每 20 分钟超时一次。我尝试了不同的表单身份验证超时值,并且总是在超时的中途创建一个新会话。
我需要将表单身份验证超时设置为一个非常大的值以避免这种情况发生。
从.NET 1.1升级之前没有这个问题
有人知道为什么吗?这是在 asp.net 4.0 中处理滑动过期的错误吗?
【问题讨论】:
-
为什么需要设置 FormsAuthentication Timeout(即在你的情况下为 2 分钟),只依靠 sessiontime out 看看是否能解决问题。
-
问题是,如果我将表单身份验证超时设置为与会话超时相同,则超时发生在身份验证超时的一半。我想了解为什么它不能按预期工作。
标签: asp.net session timeout formsauthenticationticket