Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在ajax调用中处理过期的.NET表单身份验证coookie的最佳方法?_Asp.net_Asp.net Mvc_Ajax_Json_Authentication - Fatal编程技术网

Asp.net 在ajax调用中处理过期的.NET表单身份验证coookie的最佳方法?

Asp.net 在ajax调用中处理过期的.NET表单身份验证coookie的最佳方法?,asp.net,asp.net-mvc,ajax,json,authentication,Asp.net,Asp.net Mvc,Ajax,Json,Authentication,我正在开发一个ASP.NET MVC应用程序,我想知道哪种方法是处理ajax调用期间检测到的过期的.NET表单身份验证cookie的最佳方法 您认为将ajax响应打包到包含cookie有效性信息的JsonResult中是最好的解决方案吗?我首选的方法是弹出一条消息说会话已过期,然后重定向到登录页面,登录后该页面将恢复到当前页面。不确定您使用的是哪个ajax框架,但大多数(包括asp.net ajax)通过允许您指定onError函数来处理服务器异常 方法(var1、var2、onSuccess、

我正在开发一个ASP.NET MVC应用程序,我想知道哪种方法是处理ajax调用期间检测到的过期的.NET表单身份验证cookie的最佳方法


您认为将ajax响应打包到包含cookie有效性信息的JsonResult中是最好的解决方案吗?

我首选的方法是弹出一条消息说会话已过期,然后重定向到登录页面,登录后该页面将恢复到当前页面。

不确定您使用的是哪个ajax框架,但大多数(包括asp.net ajax)通过允许您指定onError函数来处理服务器异常

方法(var1、var2、onSuccess、onError){..}等

如果您让asp.net管理会话,并且只要所讨论的页面仅为经过身份验证的用户启用,框架将在过期时抛出无效会话异常(我完全忘记了是哪个)


在onError中,您可以检查异常类型,然后重新定向到登录页面。事实上,您所要做的就是重新加载当前页面,.net会将其重定向到您的登录页面。document.location.href=document.location.href;(这将重新加载当前页面,忽略已提交的表单数据(如果有的话)

您可能会非常喜欢它。如果OneError上的AJAX是无效会话,请弹出一个模式弹出窗口(lighbox表单),并将登录视图包装在其中。允许用户从模式登录,这样他们就不会丢失任何表单数据,也不会被重定向到整个站点。然而,最有可能的情况是,需要尝试重新发布数据。可能需要做一些工作,但最终,我认为这对最终用户来说更为无缝


PS-我在考虑Digg.com类型的登录界面。单击添加注释,您将获得模式弹出窗口。

如果您使用此方法,请确保请求通过HTTPS连接,就像您对所有登录所做的那样。如果你的主页不是HTTPS,那么你就必须使用JS中的同源策略。我同意HTTPS,但是使用Lightbox,我认为你不必担心同源。您正在调用一个实际的网页,以在相当于IFrame的情况下打开,填写表单,发布表单,.NET设置cookie。这两个页面之间没有JS调用,这就是为什么从IFramed登录页面设置cookie后,您必须重新提交表单的原因。现在,如果你想使用同一来源,那么你可以在成功登录后自动提交表单。这也是最简单/最安全的方法。