- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 MVC3 项目中,我有一个带有 [Authorize] 属性的 Controller 。我有一个没有 ajax 的表单提交,如果用户没有登录,它会将用户(按预期)重定向到登录屏幕。
但是,现在我有一个使用 jquery ajax 提交的表单,我该如何做同样的事情呢?如果用户未获得授权,则将用户重定向到登录屏幕?成功登录后,用户应该被重定向到初始操作。
Controller
[Authorize]
[ValidateInput(false)]
public JsonResult SubmitChatMessage(string message)
{
if (!string.IsNullOrEmpty(message))
{
// Do stuff
}
// Return all chat messages
return GetChatMessages();
}
客户端 JQUERY
$(document).ready(function () {
$("form[action$='SubmitChatMessage']").submit(function (event) {
$.ajax({
url: $(this).attr("action"),
type: "post",
dataType: "json",
data: $(this).serialize(),
success: function (response) {
// do stuff
}
});
return false;
});
});
我可以从 Firebug 控制台窗口看到服务器返回:
GET http://domain/Account/LogOn?ReturnUrl=%2fProductDetails%2fSubmitChatMessage
期待您的帮助!
更新了可能的解决方案
最佳答案
是的,这是我一直讨厌关于 ASP.NET 中的表单例份验证的事情之一 - 根本不支持 AJAX 身份验证。将处理 401 的 IIS 添加到其中,这可能会很痛苦。
有几种方法可以做到这一点,但没有一种方法特别“干净”。
其中包括:
在 Controller 中设置一个ViewBag标志,对应于Request.IsAuthenticated
,然后如果未通过身份验证,则将提交按钮点击事件重写到登录页面。
让您的 AJAX 操作返回 JsonResult
,它是“code”的属性。其中代码 0 表示成功,1 表示未验证,2 表示其他数据问题等。然后在 complete
$.ajax
回调中检查该代码并重定向到登录页面。
检查 $.ajax
jqXHR
响应对象的状态代码 403
,然后重定向到登录页面。
为您的提交按钮编写一个自定义 HTML 帮助程序,它会呈现常规提交按钮或转到登录页面的 anchor 标记,具体取决于身份验证状态。
编写一个自定义授权属性,用于检查是否 Request.IsAjaxRequest()
,并返回自定义 JSON 对象,而不是重定向到登录页面的默认行为(可以AJAX 请求不会发生)。
关于jquery - mvc 3、jquery ajax 和表单例份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6891204/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!