【发布时间】:2011-01-21 22:32:37
【问题描述】:
对于上下文,我在 web.config 中设置了表单身份验证超时值,并且正在使用 ASP.NET MVC 1。我认为将我的问题描述为 2 个用例可能是最简单的——第一个会发生什么没有身份验证超时,第二个是身份验证超时:
正常情况:
用户登录应用程序,身份验证计时器开始计时。虽然身份验证期限仍然有效,但用户单击页面上的某些内容会触发 AJAX 调用(通过 jQuery)。我们访问服务器,处理请求,并将部分视图返回给用户(作为ActionResult)。 html 作为 ajax 成功方法的字符串,我将这个 html 注入到页面上的 div 中。这一切都在意料之中。
超时情况:
用户登录应用程序,身份验证计时器开始计时。在 x 时间之后,身份验证期到期。随着到期时间的推移,用户单击页面上的某些内容会触发 AJAX 调用(使用 jQuery)。我们访问了服务器,但身份验证票已过期。 .NET 自动重定向到在设置超时期限的同一 web.config 元素中定义的 loginURL 值。对我来说,这个页面是要求用户输入用户名/密码以登录的登录页面。因此Home/Login控制器操作运行,并最终将完整(非部分)视图作为html字符串返回给ajax的成功方法。这会导致页面爆炸,因为我正在尝试获取整个页面的 html(带有<html> 标签和所有标签)并将其注入页面上的 div 中。
所以这就是我的问题。当身份验证期到期时,.NET 将我重定向到登录页面,我最终将整个页面的 html 返回到 ajax 成功方法。当然,当服务器命中不是 AJAX 调用时,一切正常——它很好地重定向到登录页面。但是我该如何处理这种情况呢?有人有什么想法吗?
谢谢。
【问题讨论】:
标签: asp.net-mvc ajax timeout forms-authentication