【发布时间】:2009-09-02 11:20:11
【问题描述】:
我正在开发一个 ASP.NET MVC 应用程序,我想知道哪种方法是处理在 ajax 调用期间检测到的过期 .NET Forms 身份验证 cookie 的最佳方法。
您认为将 ajax 响应打包到包含有关 cookie 有效性信息的 JsonResult 中是最佳解决方案吗?
【问题讨论】:
标签: asp.net asp.net-mvc ajax json authentication
我正在开发一个 ASP.NET MVC 应用程序,我想知道哪种方法是处理在 ajax 调用期间检测到的过期 .NET Forms 身份验证 cookie 的最佳方法。
您认为将 ajax 响应打包到包含有关 cookie 有效性信息的 JsonResult 中是最佳解决方案吗?
【问题讨论】:
标签: asp.net asp.net-mvc ajax json authentication
我的首选方法是弹出一条消息说会话已过期,然后重定向到登录页面,登录后将恢复到当前页面。
【讨论】:
人们可能会对此非常感兴趣。如果 onError 上的 AJAX 是无效会话,则弹出一个模式弹出窗口(灯箱表单),其中包含您的登录视图。允许用户从模式登录,然后他们不会丢失任何表单数据并且不会在您的整个站点上重定向。然而,最有可能的是,他们需要尝试重新发布他们的数据。可能需要做一些事情,但最终,我认为它对最终用户来说更加无缝。
PS - 我在想 Digg.com 类型的登录界面。点击添加评论,弹出模态框。
【讨论】:
不确定您使用的是哪个 ajax 框架,但大多数(包括 asp.net ajax)通过让您指定 onError 函数来处理服务器异常。
Namespace.Object.Method(var1, var2, onSuccess, onError) { .. } etc..
如果你让 asp.net 管理会话,并且只要有问题的页面只对经过身份验证的用户启用,框架就会在过期时抛出无效会话异常(我忘了具体是哪个)
在 onError 中,您可以检查异常类型,并重定向到登录页面。事实上,您所要做的就是重新加载当前页面,.net 会将其重定向到您的登录页面。文档.location.href = 文档.location.href; (这将重新加载当前页面,忽略提交的表单数据(如果有))
【讨论】: