System.Web.Http.Authorize 与 System.Web.Mvc.Authorize

问题描述 投票:0回答:2

哪个授权属性?
系统.Web.Http.授权
System.Web.Mvc.Authorize

using System.Web.Mvc      // or
using System.Web.Http  

典型控制器

    [Authorize]
    public class SomeController : Controller

我们有带有

[Authorize]
注释的控制器 我刚刚注意到,由于使用命名空间,注释在技术上引用了不同的属性类。

该项目包含MVC控制器和WEBAPI控制器。

我应该使用哪一个?为什么? 如果我不解决这个问题,我们可能会遇到什么问题?

asp.net asp.net-mvc asp.net-web-api
2个回答
88
投票

您必须针对

System.Web.Http.Authorize
(Web API 控制器)使用
ApiController
,针对
System.Web.Mvc.Authorize
(MVC 控制器)使用
Controller
。由于框架将过滤器作为管道处理的一部分运行,并且控制器期望应用正确的过滤器,因此如果您不使用相应的过滤器,授权将不起作用。


0
投票

System.Web.Http.AuthorizeSystem.Web.Mvc.Authorize 以及 Microsoft.AspNetCore.Authorization.Authorize 是 .NET 生态系统中不同框架中使用的授权属性。每个都有类似的目的,但用于不同的上下文:

System.Web.Http.Authorize:该属性用在 ASP.NET Web API 中,ASP.NET Web API 是构建 HTTP 服务的框架。它是 System.Web.Http 命名空间的一部分。 System.Web.Http.Authorize 用于根据用户角色或策略限制对 Web API 控制器和操作的访问。

System.Web.Mvc.Authorize:此属性在 ASP.NET MVC 中使用,ASP.NET MVC 是使用模型-视图-控制器模式构建 Web 应用程序的框架。它是 System.Web.Mvc 命名空间的一部分。 System.Web.Mvc.Authorize 用于根据用户角色或策略限制对 MVC 控制器和操作的访问。

Microsoft.AspNetCore.Authorization.Authorize:此属性用在 ASP.NET Core 中,ASP.NET Core 是一个用于构建 Web 应用程序的跨平台、高性能框架。它是 Microsoft.AspNetCore.Authorization 命名空间的一部分。 Microsoft.AspNetCore.Authorization.Authorize 用于根据用户角色或策略限制对 ASP.NET Core MVC 和 Razor Pages 应用程序中的控制器和操作的访问。

总结 虽然这三者都具有执行授权规则的类似目的,但它们在 ASP.NET 生态系统中的不同框架中使用:Web API、MVC 和 ASP.NET Core。

© www.soinside.com 2019 - 2024. All rights reserved.