gpt4 book ai didi

asp.net-mvc - .NET C# : How to handle forms authentication expiration during an AJAX call

转载 作者:行者123 更新时间:2023-12-04 19:44:25 25 4
gpt4 key购买 nike

对于上下文,我在我的 web.config 中设置了一个表单例份验证超时值,并且正在使用 ASP.NET MVC 1。我认为将我的问题陈述为 2 个用例可能是最简单的——第一个发生了什么没有身份验证超时,第二个身份验证超时会发生什么:

正常情况:

用户登录应用程序,身份验证计时器开始计时。虽然身份验证期限仍然有效,但用户单击页面上的某些内容会触发 AJAX 调用(通过 jQuery)。我们访问服务器,处理请求,并将部分 View 返回给用户(作为 ActionResult )。 html 作为 ajax 的成功方法的字符串出现,我采用此 html 并将其注入(inject)页面上的 div 中。这一切都在意料之中。

超时案例:

用户登录应用程序,身份验证计时器开始计时。 x 时间后,身份验证期限到期。随着到期时间的推移,用户单击页面上的某些内容会触发 AJAX 调用(使用 jQuery)。我们访问了服务器,但身份验证票已过期。 .NET 自动重定向到 loginURL在设置超时期限的同一个 web.config 元素中定义的值。对我来说,这个页面是登录页面,要求用户输入用户名/密码进行登录。所以 Home/Login Controller 操作运行,并最终将完整(而非部分) View 作为 html 字符串返回给 ajax 的成功方法。这会导致页面崩溃,因为我试图获取整个页面的 html(带有 <html> 标签和所有)并将其注入(inject)页面上的 div。

这就是我的问题。当身份验证期到期时,.NET 将我重定向到登录页面,我最终将整个页面的 html 返回给 ajax 成功方法。当然,当服务器命中不是 AJAX 调用时,一切正常——它重定向到登录页面。但是我该如何处理这种情况呢?有人有什么想法吗?

谢谢。

最佳答案

所以当票证到期时,帐户/登录操作就会被执行

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();
}

关于asp.net-mvc - .NET C# : How to handle forms authentication expiration during an AJAX call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4764528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com