我已经使用权威注释标记了我的控制器,但想豁免其中一种方法......可以这样做吗?怎么样?授权例外
[Authorize(Roles="Admin")]
public class ProductController : Controller
{
[DEAUTHORIZE]
public ActionResult Start(int it)
{ ... }
我已经使用权威注释标记了我的控制器,但想豁免其中一种方法......可以这样做吗?怎么样?授权例外
[Authorize(Roles="Admin")]
public class ProductController : Controller
{
[DEAUTHORIZE]
public ActionResult Start(int it)
{ ... }
不,这是做不到的。达到此目的的标准方法是简单地将Start
操作移出单独的控制器中。另一种可能性在于构建自定义IFilterProvider,它将有条件地应用授权属性,而不是将其手动烘焙到ProductController
中。例如NInject使用它并提供pretty fluent syntax到配置操作过滤器。您可以根据当前上下文conditionally apply them。
在MVC 4中引入了AllowAnonymousAttribute,它告诉动作调用者跳过AuthorizeAttribute。
[AllowAnonymous]
感谢您的直接答复。将调查NInject ...看起来很有趣。 – ekkis