在MVC3控制器中堆叠授权

时间:2011-12-16 08:45:55

标签: asp.net-mvc asp.net-mvc-3

是否可以在控制器上堆叠多个自定义AuthorizeAttribute

我尝试过这样的事情:

[IsOwner]
[IsFranchisee]
public class CartController : Controller
{
    ...
}

但它的行为是不稳定的。有时它有效,有时它不起作用(主要是后者)。

3 个答案:

答案 0 :(得分:3)

是的,你可以。如果您喜欢AuthorizeAttribute的来源,则会AllowMultiple = true

答案 1 :(得分:1)

通常,对于动态授权,控制器或操作会被赋予一个[授权]注释,然后在控制器或操作内部处理授权。

答案 2 :(得分:1)

您确定您的实施是否正确? 我问,因为除非您设置FilterAttributes属性,否则AuthorizeAttributeOrder派生的)订单无法保证。

因为你说行为不稳定,我想也许有一个属性会取消另一个属性。例如,您的用户IsOwner == true,但IsFranchisee == false。也许是否授予权限取决于首先执行权限?

因此,您可以尝试为您的属性提供一个订单属性,并查看该行为是否仍然不稳定