我正在开发一个ASP.NET MVC应用程序,我想知道哪个是处理在ajax调用期间检测到的过期.NET Forms身份验证cookie的最佳方法。
您是否认为将ajax响应打包到包含cookie有效性信息的JsonResult中是最佳解决方案?
答案 0 :(得分:2)
我首选的方法是弹出一条消息,说明会话已过期,然后重定向到登录页面,该页面将在登录后恢复到当前页面。
答案 1 :(得分:1)
人们可以对此有所了解。如果onError上的AJAX是无效会话,则弹出一个模式弹出窗口(lighbox表单),其中包含您的登录视图。允许用户从模式登录,然后他们不会丢失任何表单数据,也不会在您的站点上重定向。最有可能的是,遗嘱需要尝试重新发布其数据。可能会采取一些措施,但最后,我认为它对最终用户来说更加无缝。
PS - 我在想Digg.com类型的登录界面。点击添加评论,即可获得模态弹出窗口。答案 2 :(得分:0)
不确定您使用的是哪个ajax框架,但大多数(包括asp.net ajax)通过让您指定onError函数来处理服务器异常。
Namespace.Object.Method(var1,var2,onSuccess,onError){..}等..
如果你让asp.net管理会话,并且只要为经过身份验证的用户启用了有问题的页面,框架将在它过期时抛出无效的会话异常(我忘记了哪个)
在onError内部,您可以检查异常类型,并重新定向到登录页面。事实上,您所要做的就是重新加载当前页面,.net会将其重定向到登录页面。 document.location.href = document.location.href; (这将重新加载当前页面,忽略提交的表单数据,如果有的话)