C# 如何创建适用于整个区域的过滤器?

C# 如何创建适用于整个区域的过滤器?,c#,asp.net-mvc,C#,Asp.net Mvc,我正在使用C#MVC5,我创建了一个AccessAttribute,定义每个用户可以基于其权限访问的页面 在我的应用程序中,有一个名为“admin”的管理,只有“admin”用户才能访问 问题:是否可以将全局筛选应用于此区域,类似于我们如何将全局筛选应用于整个项目 当前解决方案:将AccessAttribute添加到管理部分的每个类定义中 该解决方案的问题:如果我忘记将属性添加到类定义中,攻击者可以访问管理部分。在此处找到答案: 我最关心的是安全性:我不想忘记单个属性(或继承) 因此,合乎逻辑

我正在使用C#MVC5,我创建了一个
AccessAttribute
,定义每个用户可以基于其权限访问的页面

在我的应用程序中,有一个名为“admin”的管理,只有“admin”用户才能访问

问题:是否可以将全局筛选应用于此区域,类似于我们如何将全局筛选应用于整个项目

当前解决方案:将
AccessAttribute
添加到管理部分的每个类定义中


该解决方案的问题:如果我忘记将属性添加到类定义中,攻击者可以访问管理部分。

在此处找到答案:

我最关心的是安全性:我不想忘记单个属性(或继承)


因此,合乎逻辑的答案是创建一个阻止所有访问的全局过滤器,然后覆盖每个控制器的该属性。就像
AuthorizeAttribute
AllowAnonymousAttribute
一样工作。

您可以为该区域创建一个基本控制器,并在其上添加注释,然后从中继承该区域中的所有控制器-有关注释,请参阅@Carl Thx上的第二个答案,但我不会称之为解决方案。将属性应用于整个控制器或从基本控制器继承之间的时间差异是什么。此外,仅为应用属性而继承听起来是错误的。如果没有解决方案,我将只在每个类定义上面写属性。不,我不认为这是一个解决方案,因此是一个注释而不是答案-只是另一个选项:)我遇到的另一件事是,但我自己从来没有这样做过。@Gudradain,我想你错了,Carl提供的想法不是一个解决方案。事实上,它比应用属性更好地解决您的问题。请参阅,如果您仅为管理页面构建基本控制器,您将很快找到其他项目放置在该基本控制器中,以帮助您的工作流。这是一个非常好的解决方案。@MichaelPerrenoud我怎么可能记住从基类继承而不是放置一行属性呢?我首先考虑的是安全性,然后是开发的易用性。