我正在使用 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() 方法):“此请求的授权已被拒绝。” 我不明白为什么 - 我的用户有一个角色 Admin(这就是我什至能够进入管理页面的原因),如果我[Authorize]
从GetEcho()
方法中删除然后在其中设置断点,我会看到正确的 User 对象。任何想法我做错了什么?