Authorize属性で使用するとJsonResultを返すMVC 3メソッドで奇妙な動作が見られます。私がログインしていないときにAuthorizeが正しく評価されているが、ログオンフォームにリダイレクトするのではなく、Jsonレスポンスがログオンフォームであると思われる。値を返さないように指示する追加属性がありますが、代わりにユーザーが適切なreturnUrl値を使用してログオンフォームにリダイレクトしますか?私がデモとして行ったのは、新しいMVC3サイトをセットアップし、aspnet_regsql.exeコマンドを使用してAspNetMembershipを自分のDBに追加することでした。すべてがセットアップされ、正しくログインしています。 JsonResultの動作が正しくないと思われ、正しく動作させるために属性を見逃してしまったと思っています。どのような助けも大変ありがとうございます。[Authorize]属性がLogonになっていても表示されないMVC JsonResult
ここにアカウントコントローラがあります(この質問の一部ではない投稿アクションは除外されています)。ここで
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で '私は権限を持っている場合にのみ返し' を取得ログイン)ログに記録されず、ログオン()メソッドにブレークポイントがあります。この値が表示されます。 リクエスト["returnUrl"] "/ Account/AuthorizedAction"
テスト部門にはログオンフォームが表示されています:)これは私がこれを正しく処理していないようです。
ありがとうございました。 – likestoski