4

我在 asp.net 中使用表单身份验证。我已将我的 Authenticate cookie 过期时间设置为 60 分钟,在 web.config 中将会话超时设置为 60 分钟,在 web.config 中将超时设置为 60 分钟,并且在 iis 空闲超时设置为60 分钟

    <authentication mode="Forms">
        <forms loginUrl="~/Account/Login.aspx" timeout="60" defaultUrl="~/Landing.aspx" slidingExpiration="true"/>
    </authentication>
    <system.web>
        <sessionState timeout="60" mode="InProc"/>
    FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
     2,                             // Version number
     txtUserName.Text.Trim(),      // Username
     DateTime.Now,                  // Issue date
     DateTime.Now.AddMinutes(60), // Expiration date
     false,                         // Persistent?
     userData                 // User data
     );

因为如果用户空闲 60 分钟,我正在使用表单身份验证,用户应该在 60 分钟后被重定向到登录页面。但是我需要知道如果用户没有空闲 60 分钟会发生什么。身份验证 cookie 会过期吗?尽管用户仍然经过身份验证?

编辑

我错过了我在 IIS 中将应用程序池标识设置为网络服务的另一件事

4

2 回答 2

2

是的,用户仍然会过期,并且他/她将无权使用服务器上的可用资源。您正在使用 Forms Authentication Cookie,它是 FormsAuthentication Ticket 的简单容器。

因为您的票证是非永久性的,这将导致您的“cookie”过期,从而将用户重定向到登录页面。请注意,这仅处理“身份验证”,不要与 Session 混淆。

您可能有会话“过期”,但用户仍然经过身份验证,这可能是一个问题。

因此,要直接回答您的问题,“用户身份验证”将过期,他/她将被重定向到登录页面,在登录时将创建一个新的 cookie,这将创建另一个“会话”对象。超时前一个将过期。

建议:使“Web.config”中的 Forms Timeout 小于 Session。不要为任何与 Auth/Security 相关的 Session 建立依赖关系;这两个是不同的容器,应该这样对待。

于 2012-09-11T08:35:01.177 回答
0

最好阅读下面的链接。对你来说会更快。看看slidingExpiration

在到期时间的一半之前,每个请求都会刷新到期时间。

了解 Forms Authentication Ticket 和 Cookieforms 元素

于 2012-09-11T08:26:05.347 回答