AuthorizeAttribute在Mvc 5应用程序中的Web Api控制器上不起作用

Ale*_*scu 6 asp.net-mvc asp.net-web-api

我有一个使用个人用户帐户作为身份验证的MVC 5应用程序。

我将Web Api2空控制器添加到我的Controllers文件夹中,然后执行发布操作。

[Authorize]
public class AttendancesController : ApiController
{
    [HttpPost]
    public IHttpActionResult Attend([FromBody]int Id)
    {
Run Code Online (Sandbox Code Playgroud)

我运行该应用程序,登录,然后使用Postman或Fidler发送发帖请求。我总是在应用程序的“登录”页面上得到答复。

[Authorize]属性在我的api控制器上不起作用,但在mvc控制器上将起作用。为什么?

Phi*_*per 4

WebApi 和 MVC 过滤器不可互换。

请参阅这篇文章,其中解释了如何创建 WebApi 过滤器(尽管使用可以忽略的 IoC 容器): https: //damienbod.com/2014/01/04/web-api-2-using-actionfilterattribute-overrideactionfiltersattribute-and-ioc -注射/

特别是这开头一段:

重要的!Web API 的过滤器与 MVC 的过滤器不同。Web API 过滤器位于 System.Web.Http.Filters 命名空间中。