我正在使用Asp.Net Identity来保护我的应用程序。 Asp.Net Identity的配置包括对app.UseCookieAuthentication的标准调用。
然后我使用System.Web.Mvc.AuthorizeAttribute保护了一个MVC控制器(继承自System.Web.Mvc.Controller)并且它工作正常 - 登录用户可以使用MVC控制器并且不允许匿名用户。 / p>
我有另一个控制器,这次是WebApi控制器(继承自System.Web.Http.ApiController)。我试图以相同的方式保护它,即登录用户(使用MVC登录)可以调用它而匿名用户不能。我尝试使用相同的属性(System.Web.Mvc.AuthorizeAttribute),但在这种情况下,任何用户(即使未经授权)都可以调用控制器。如果我使用System.Web.Http.AuthorizeAttribute(对于WebApi控制器应该是正确的),则每个用户(甚至登录)都会收到错误。此请求已拒绝授权。
我想我必须以某种方式配置WebApi使用与MVC控制器相同的身份,但我找不到如何。有什么想法吗?
答案 0 :(得分:0)
我找到了一个解决方案:使用System.Web.Http.AuthorizeAttribute然后使用值为DefaultAuthenticationTypes.ApplicationCookie的HostAuthenticationAttribute使WebApi使用应用程序cookie进行调用。控制器如下所示:
[Authorize]
[HostAuthentication(DefaultAuthenticationTypes.ApplicationCookie)]
public class TestController : ApiController
{
...
}