我看到MVC 3方法返回一个JsonResult与Authorize属性一起使用时的奇怪行为。看起来会发生的情况是,当我没有登录但授权是正确评估的,而不是重定向到登录表单时,Json响应是登录表单。是否有一个附加属性指示响应不返回值,而是将用户重定向到登录表单,优先使用正确的returnUrl值?我做的一个演示是建立一个新的MVC3站点,并使用aspnet_regsql.exe命令将AspNetMembership添加到我的数据库。所有设置和正确登录我。 JsonResult的行为看起来不正确,我希望我错过了一个属性以使其正常工作。任何帮助非常感谢,事先感谢。MVC JsonResult与[Authorize]属性去登录但不显示视图
这里是帐户控制器(不包括Post问题)。
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”] “/ Account/AuthorizedAction”
我有测试div显示登录窗体:)这看起来像我只是没有正确处理。
感谢Darin,非常有帮助。 – likestoski 2012-03-22 18:08:58