【发布时间】:2011-03-18 19:35:38
【问题描述】:
我有一个简单的 ASP.NET 4 站点。我正在使用表单身份验证。我将会话超时设置为 20 分钟。此外,当用户进行身份验证时,我将 AuthenticationTicket 设置为在 20 分钟内过期。所以通常一切正常。如果超过 20 分钟不活动并且用户请求网站上的页面,他们将被重定向回登录页面,正如我所期望的那样。
但是,假设用户位于包含表单的页面上。然后他们等待 25 分钟。然后他们去提交表格。该站点没有被重定向回登录页面,而是尝试回发,我立即收到错误,因为回发中有代码试图从 Session 中获取信息。
如果 AuthenticationTicket 和 Session 已过期,ASP.NET 似乎不会在回发时重定向回登录。我该如何处理?我希望我不必在每一页上写特殊的代码。
添加:web.config 代码
<location path="ForgotLogin.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx"></forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
科里
【问题讨论】:
-
根据您的配置,您似乎只是失去了会话,但身份验证不会丢失,当用户将表单信息发回服务器时,会话就会丢失。您在会话中存储了哪些类型的信息?我之前遇到过这种情况,即使我指定相同的分钟数,我的身份验证 cookie 的持续时间也比我的会话长。
标签: asp.net postback session-timeout