AuthorizeAttribute适用于MVC Controller,但不适用于ApiController

时间:2016-02-22 00:42:48

标签: c# asp.net-mvc asp.net-web-api2

我对MVC和WebAPI比较陌生,所以也许我做了一些愚蠢的想法。

我正在开始我的MVC + WebAPI项目。我刚刚配置了身份验证,但遇到了一个问题:[Authorize]属性对MVC控制器正常工作,而不适用于API(返回总是401错误)。

我需要一些API的特殊配置吗?我使用默认的ApplicationSignInManager(我的意思是启动项目tempalte中的一个)。

我删除了我的Authorize属性,我可以看到在MVC控制器的操作中,User.Identity包含我的登录用户,但API控制器对此一无所知。

1 个答案:

答案 0 :(得分:3)

我已经弄清楚发生了什么。在默认项目模板中,我有WebApiConfig类,其中包含以下行:

config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

这些线条将ApiContoller与其他应用程序分开。因此删除它们是我的问题。