当表单身份验证超时时,如何重定向到自定义页面?

时间:2013-09-16 16:03:43

标签: asp.net vb.net http-status-code-401 form-authentication

当网站表单身份验证超时时,我可以重定向到自定义页面而不是Login.aspx页面吗?我有非常标准的表单身份验证,在web.config中有以下代码。

<forms loginUrl="Login.aspx" timeout="25" slidingExpiration="true" cookieless="UseCookies" defaultUrl="Default.aspx"/>

   <customErrors mode="On" defaultRedirect="ErrorPage.aspx">
      <error statusCode="401" redirect="TimedOutErrorPage.aspx" />
   </customErrors>

   <location path="TimedOutErrorPage.aspx">
    <system.web>
        <authorization>
            <allow users="?"/>
        </authorization>
    </system.web>
 </location>

我曾尝试使用401 statusCode进行自定义错误,但它无法正常工作。它总是回到Login.aspx。

1 个答案:

答案 0 :(得分:1)

当你的会话超时时,在服务器端它是已知的,但客户端即浏览器,由于任何原因,不知道会话何时到期,因此在下一个请求之前不会处理任何内容通过做一些活动来完成。那时会发现会话已经过期,然后尝试重新登录。

所以,我们的想法是开发一个解决方案,它将跟踪客户端(浏览器)的超时值,并对服务器端进行适当的更新。使用客户端脚本将服务器超时与客户端超时同步。

然后,您可以向用户显示有关会话即将到期的警告/通知,并强制他们与之交互。详细阅读 this article