Asp.net mvc 是否可以覆盖已在控制器级别应用于特定方法的属性?

Asp.net mvc 是否可以覆盖已在控制器级别应用于特定方法的属性?,asp.net-mvc,attributes,authorization,Asp.net Mvc,Attributes,Authorization,如果我在控制器级别应用了授权属性,是否可以在该控制器上的某个方法上覆盖该属性 谢谢 詹姆斯这取决于你想要什么样的“覆盖”。不能删除类上的属性,但可以再次将该属性添加到方法中,以使内容更具限制性 根据评论更新。首先,创建自己的属性有点危险。AuthorizeAttribute包含与缓存属性交互的代码,以确保缓存不能向未经授权的用户提供受保护的内容。至少,您应该对现有属性进行子类型化,而不是创建全新的内容。但是,一般来说,最好使用现有的authorized属性,通过创建新的/查找现有的ASP.NET

如果我在控制器级别应用了授权属性,是否可以在该控制器上的某个方法上覆盖该属性

谢谢


詹姆斯

这取决于你想要什么样的“覆盖”。不能删除类上的属性,但可以再次将该属性添加到方法中,以使内容更具限制性

根据评论更新。首先,创建自己的属性有点危险。AuthorizeAttribute包含与缓存属性交互的代码,以确保缓存不能向未经授权的用户提供受保护的内容。至少,您应该对现有属性进行子类型化,而不是创建全新的内容。但是,一般来说,最好使用现有的authorized属性,通过创建新的/查找现有的ASP.NET成员资格提供程序来专门化您的授权


我认为在一个动作上有一个过滤器“覆盖”控制器上的过滤器不是一个好的设计。但是,您可以更改控制器上过滤器的设计,使其不需要对特定名称的操作进行授权。例如,您可以覆盖AuthorizeAttribute.AuthorizeCore方法来测试操作名称,方法与现有方法测试用户名和角色的方法相同。请仔细记下此方法中有关线程安全性的注释。

这取决于您想要的“覆盖”类型。不能删除类上的属性,但可以再次将该属性添加到方法中,以使内容更具限制性

根据评论更新。首先,创建自己的属性有点危险。AuthorizeAttribute包含与缓存属性交互的代码,以确保缓存不能向未经授权的用户提供受保护的内容。至少,您应该对现有属性进行子类型化,而不是创建全新的内容。但是,一般来说,最好使用现有的authorized属性,通过创建新的/查找现有的ASP.NET成员资格提供程序来专门化您的授权


我认为在一个动作上有一个过滤器“覆盖”控制器上的过滤器不是一个好的设计。但是,您可以更改控制器上过滤器的设计,使其不需要对特定名称的操作进行授权。例如,您可以覆盖AuthorizeAttribute.AuthorizeCore方法来测试操作名称,方法与现有方法测试用户名和角色的方法相同。请仔细记下此方法中有关线程安全性的注释。

我不确定这是否完全是同一个问题,但它可能有助于


我不确定这是否完全是同一个问题,但这可能会有帮助


很抱歉没有说清楚。我正在使用我自己的Authorize属性实现,我希望对控制器上的所有方法(除了一个)都要求授权。这可能吗?很抱歉没有说清楚。我正在使用我自己的Authorize属性实现,我希望对控制器上的所有方法(除了一个)都要求授权。这可能吗?