【发布时间】:2011-02-07 04:56:08
【问题描述】:
短版:在收到 AJAX ASP.NET 成员身份验证响应后,留在同一页面上运行第二个 AJAX 调用的最佳方式是什么?
加长版:想象一个基于 ASP.NET MVC 的基于 Web 的画图程序。用户绘制图片,在此期间用户的会话已超时。用户点击“保存”并通过 AJAX 对话框提示“您的会话已超时。请在下面输入您的凭据。” (有关如何进行 AJAX 身份验证,请参阅jQuery Forms Authentication with ASP.NET MVC。)输入有效凭据后,用户将重新进行身份验证。
通常,此时,用户会被重定向到returnUrl,这可以从 MVC 的默认登录方法签名中看出:
public ActionResult LogOn(LogOnModel model, string returnUrl)
但是,在这种情况下,我希望留在同一页面上,而是对我的处理程序SaveArt() 进行 AJAX 调用,它将用户的工作写入数据库。我可以劫持 returnUrl 让它包含我想调用的后续 Javascript 函数的名称,但我能想到从客户端执行它的唯一方法是使用可怕的 eval,它根本没有看起来很安全。有没有另一种方法来完全 AJAXify 这个过程?在这里使用eval 来运行名称由服务器返回的函数有什么危险?
【问题讨论】:
标签: javascript jquery asp.net-mvc ajax authentication