【发布时间】:2009-08-22 08:45:09
【问题描述】:
我想知道是否/如何可以覆盖 ASP.NET MVC 中的默认 [Authorize] 行为。我知道我可以创建一个新的动作过滤器,制作我自己的属性等等;如果我可以简单地更改 [Authorize] 行为并用我自己的代码替换它的工作方式,我只是感兴趣?
编辑:男生和女生。感谢您的意见,但正如我所写,我不希望引入新的 [XYZAuthorize] 属性。我知道如何做到这一点。我想保留 [Authorize] 符号,但只是改变它的工作方式。
【问题讨论】:
-
为什么要保留属性的“授权”名称并更改其行为?这是一件坏事。人们,当他们看到[授权]时,他们期望它会做什么。如果你改变它,阅读你的代码会困难得多。甚至为你在未来。
-
我不同意;如果您对此提出异议,那么任何运算符或方法的重载/覆盖都是错误的。
-
@Alex:我不同意。运算符重载是一件好事。滥用它是一件坏事。通常的例子:你有一个 Vector 类,你创建了“+”运算符。很明显它会做什么。但是“*”运算符呢?做不好,是叉积还是点积?还是另一种定制产品?所以:重载是好的,但是当你掩盖约定时它是非常糟糕的。
-
不是专家,我遵循“Bruno Reis”的建议,将其用作单独的 [MyCompanyNameAuthorize] 属性。如何做到这一点的一个例子是geekswithblogs.net/thomasthedeuce/archive/2009/06/25/…
标签: c# .net asp.net-mvc authorize-attribute action-filter