我认为你所引用的帖子说得很对,但这并不是不使用基础控制器的理由。事实上,出于方便考虑,我在我的一些ASP.NET MVC应用程序中使用基础控制器。
然而,现在不再建议这样做:
使用基础控制器一次性应用[Authorize]属性是一种常见做法,我认为这没有任何问题。
自MVC3以来,您可以像这样注册全局操作过滤器:
GlobalFilters.Filters.Add(new MyAuthorizeAttribute());
之前在处理类似于覆盖 User
主体时,我曾经使用过基本控制器(参见我的旧问题描述想法: Is this Custom Principal in Base Controller ASP.NET MVC 3 terribly inefficient?)。
老实说,我想不出更好的方法来做这件事情,所以在这种情况下,使用基本控制器可能是一件好事情。
我可能不会为不同的授权角色设置不同的基本控制器,因为只需向控制器添加 [Authorize(Roles="whatever")]
就可以了,这样更简单(并且代码更少),而且可以更容易地看到正在发生什么。
值得考虑自定义的AuthorizeAttribute。
AuthorizateAttribute
可能更好(请参见编辑答案中的链接)。 - Tom Chantler