gpt4 book ai didi

jquery - 具有 [Authorize] 属性的 MVC JsonResult 将登录但不显示 View

转载 作者:行者123 更新时间:2023-12-01 01:09:41 26 4
gpt4 key购买 nike

我发现 MVC 3 方法在与 Authorize 属性一起使用时返回 JsonResult 的奇怪行为。看起来发生的情况是,当我未登录时,授权会被正确评估,但 Json 响应不是重定向到登录表单,而是登录表单。是否有一个附加属性指示响应不返回值,而是将用户重定向到登录表单,最好使用正确的 returnUrl 值?作为演示,我所做的是设置一个新的 MVC3 站点,并使用 aspnet_regsql.exe 命令将 AspNetMembership 添加到我的数据库中。所有这些都已设置并正确登录。 JsonResult 的行为似乎不正确,我希望我只是错过了一个属性以使其正常工作。非常感谢任何帮助,提前致谢。

这是帐户 Controller (省略不属于此问题一部分的发布操作)。

public class AccountController : Controller
{
public ActionResult LogOn()
{
return View();
}

[Authorize]
public JsonResult AuthorizedAction()
{
return Json("Only returns if I am authorized");
}
}

这是 Html 标记:

<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#btnTest").click(function () {
$.ajax({
type: "POST",
url: "Account/AuthorizedAction",
data: {},
success: function (result) {
$("#testMe").html(result);
},
error: function (result) {
$("#testMe").html('Something broke in the ajax request');
}
});
});
});
</script>

<input type="button" id="btnTest" value="Test me" />
<div id="testMe">I have initial text</div>

结果:

1) 登录后,我在测试 div 中看到“仅在获得授权时才返回”2)当未记录并且我的 Logon() 方法中有一个断点时,我会看到这个值 请求[“returnUrl”] “/帐户/AuthorizedAction”

我的测试 div 显示登录表单:) 这似乎是我没有正确处理这个问题。

最佳答案

您可以查看following blog post其中 Phil Haack 解释了一种非常好的技术,允许您检测是否已发出对未经身份验证的资源的请求,并通过拦截 401 HTTP 状态代码来采取相应的操作。

关于jquery - 具有 [Authorize] 属性的 MVC JsonResult 将登录但不显示 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com