0

在我工作的地方,我们有一个自定义的安全/身份验证机制,用于使用 WebForms 的内部 Web 应用程序。现在我们正在使用 ASP.NET MVC 3 进行开发,并希望扩展Controller该类以支持这一点,就像我们对 WebForm 的Page类所做的那样。然后我们将把它打包到一个自定义的共享 DLL 中。

我想知道这在与未来版本的 MVC 的兼容性方面有多安全。如果 ASP.NET MVC 4.0 明年问世,我们的自定义控制器类(引用 ASP.NET MVC 3.0 控制器类)仍然可以在 MVC 4.0 应用程序中工作吗?

有什么方法可以在Controller不依赖特定 MVC 版本的情况下以某种方式扩展 a 吗?


不是这个的副本: Extending Asp.NET MVC3 Controller Class

4

2 回答 2

1

问题是从“控制器”类继承,您需要首先添加对特定于版本的 Sytem.Web.Mvc 的引用。

每个版本的 ASP.NET MVC 都有自己的 DLL。您将无法在 MVC 4 项目中使用为 ASP.NET MVC3 设计的客户 DLL。

现在,您可以创建一个继承自 Controller 的类并将其包含在您的 ASP.NET MVC 项目中,然后随着项目版本的更改,对“Controller”的引用也会发生变化,但这只是因为您的项目具有对该版本的引用。

于 2012-06-14T20:56:40.790 回答
0

不是您要问的,但是如果您使用的是自定义安全/身份验证机制,则最好覆盖控制对所有控制器的访问的 AuthorizeAttribute。

还有很多自定义身份验证的示例。从自定义控制器派生可能会导致潜在的安全问题,导致有人忘记添加基类 - 在应用程序启动时将 AuthorizeAttribute 应用于所有控制器是正常的。

有关此方法的更多信息,请参见此处

对于非安全相关的共享方法,您可以将它们实现为 IController 上的扩展方法,而不是扩展基类本身,除非您特别需要覆盖控制器基类中的任何内容。

于 2012-06-14T20:52:05.453 回答