9

我正在考虑为我正在处理的整个 MVC 4 项目使用基本控制器。我在网上发现了关于它的相互矛盾的观点,并且不确定这是否违反最佳实践,或者这只是个人喜好问题。

这是一个stackoverflow帖子,说不要这样做

是一篇文章,展示了如何做到这一点,就像它没有有害影响一样。在这里这里,他们也解释了它的用法,没有人真正指出这是不好的做法或可能导致任何问题。

那么在 MVC 4 项目中使用几个基本控制器的真正观点是什么?好的?坏的?

编辑

我还想指出,我使用基本控制器的直接目标是,我可以在一个控制器中完成授权,并且所有控制器都不需要具有 Authorize 属性。我将为每个角色创建单独的基本控制器。由于角色永远不会改变,我永远不需要为另一个角色创建另一个基本控制器。您如何看待这种设计控制器的方式?

谢谢你的时间。

4

2 回答 2

4

恕我直言,您引用的帖子说的是绝对正确的,但这不是不使用基本控制器的理由。事实上,由于商品原因,我在一些 ASP.NET MVC 应用程序中使用了基本控制器。

这不再是可取的:

有一个基本控制器来应用 [Authorize] 属性一次是一种常见的做法,我认为它没有任何问题。

从 MVC3 开始,您可以像这样注册全局操作过滤器:

GlobalFilters.Filters.Add(new MyAuthorizeAttribute());

于 2013-03-14T09:20:32.420 回答
3

在处理诸如覆盖User主体之类的事情之前,我曾使用过基本控制器(请参阅此处了解我描述该想法的一个老问题:基本控制器 ASP.NET MVC 3 中的此自定义主体是否非常低效?)。

老实说,我想不出更好的方法来做到这一点,所以我觉得在这种情况下使用基本控制器可能是一件好事。

我可能不会为不同的授权角色使用不同的基本控制器,因为它非常简单(并且代码更少)只是用来装饰控制器,[Authorize(Roles="whatever")]并且更容易准确地看到正在发生的事情。

可能值得考虑自定义AuthorizeAttribute

于 2013-03-14T09:36:41.160 回答