2011-12-16 78 views
0

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

我试图做这样的事情:

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

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

回答

1

你确定你的实现是正确的吗? 我在问,因为FilterAttributes没有保证的订单,(其中AuthorizeAttribute派生自),除非你设置了Order属性。

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

所以,你可以试着给你的属性的顺序属性,看看行为仍然是不稳定的

+0

没想到这一点。但最后我改变了我的实现。 – Ron 2011-12-16 15:07:21

3

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

1

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