AdminColntroller を使用して管理ページ (MVC 5) を作成しています。
[Authorize(Roles = "Admin")]
public class AdminController : ApplicationBaseController
{
public ActionResult Index()
{
return View();
}
}
シングルページアプリケーションとして実装したいので、アクセスを保護したい管理Web APIへのクライアント側のajax呼び出しを行います。
[RoutePrefix("api/admin")]
[Authorize(Roles = "admin")]
public class AdminApiController : ApiController
{
[Route("echo")]
public HttpResponseMessage GetEcho()
{
return Request.CreateResponse(HttpStatusCode.OK, new {Result = "Hello World"});
}
}
これは、管理ビューから作成している ajax 呼び出しです。
<script>
jQuery.ajax("https://example.com/api/admin/echo").done(function(data) {
console.log(data);
}).fail(function(a,b,c) {
console.log(a);
});
</script>
これにより、エラー (fail() メソッド) がスローされます: 「この要求に対して承認が拒否されました。」理由がわかりません - 私のユーザーは管理者の役割を持っています (そのため、管理者ページにアクセスすることさえできます)。メソッド[Authorize]
から削除しGetEcho()
てその中にブレークポイントを設定すると、正しいユーザー オブジェクトが表示されます。私が間違っていることはありますか?