对于上下文,我在 web.config 中设置了表单身份验证超时值,并且正在使用 ASP.NET MVC 1。我认为将我的问题表述为 2 个用例可能是最简单的 - 第一个用例是在没有身份验证的情况下发生的情况超时,第二个是身份验证超时会发生什么:
正常情况:
用户登录应用程序,身份验证计时器开始计时。当身份验证期限仍然有效时,用户单击页面上的某些内容会触发 AJAX 调用(通过 jQuery)。我们访问服务器,处理请求,并将部分视图返回给用户(作为ActionResult
)。 html 作为 ajax 成功方法的字符串传递,我将这个 html 注入到页面上的 div 中。这都是预料之中的。
超时案例:
用户登录应用程序,身份验证计时器开始计时。后x时间量,验证期限到期。随着过期时间的推移,用户单击页面上的某些内容会触发 AJAX 调用(使用 jQuery)。我们访问了服务器,但身份验证票证已过期。 .NET 自动重定向到loginURL
在设置超时期限的同一 web.config 元素中定义的值。对我来说,此页面是登录页面,要求用户输入用户名/密码进行登录。所以Home/Login
控制器操作运行,并最终将完整(非部分)视图作为 html 字符串返回给 ajax 的 success 方法。这会导致页面崩溃,因为我试图获取整个页面的 html(带有<html>
标签和所有)并将其注入到页面上的 div 中。
这就是我的问题所在。当身份验证期限到期时,.NET 将我重定向到登录页面,我最终将整个页面的 html 返回到 ajax 成功方法。当然,当服务器点击不是 AJAX 调用时,一切都会正常工作——它会正常重定向到登录页面。但我该如何处理这个案子呢?有人有什么想法吗?
Thanks.
因此,当票证过期时,将执行帐户/登录操作
public Action Login()
{
if(Request.IsAjaxRequest())
return Content(@"<meta http-equiv="refresh" content="1" />");
//if it is ajax request the div will be filled with this meta tag which will refresh the page
return View();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)