【问题标题】:AuthorizeAttribute works for MVC Controller but doesn't for ApiControllerAuthorizeAttribute 适用于 MVC 控制器,但不适用于 ApiController
【发布时间】:2016-02-22 00:42:47
【问题描述】:

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

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

我需要一些特殊的 API 配置吗?我正在使用默认的 ApplicationSignInManager(我的意思是来自启动项目模板的一个)。

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

【问题讨论】:

  • 你能检查一下你的 API 控制器(不是 mvc 控制器)是否用 Authorize 属性装饰吗?

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


【解决方案1】:

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

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

这些行将 ApiContoller 与其他应用程序分开。所以删除它们解决了我的问题。

【讨论】:

    猜你喜欢
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多