在我工作的地方,我们使用WebForms为内部Web应用程序提供了自定义安全/身份验证机制。现在我们正在ASP.NET MVC 3中进行开发,并希望扩展Controller
类来支持这一点,就像我们对WebForm的Page
类一样。然后我们将其打包成一个自定义共享的DLL。
我想知道在与未来版本的MVC的兼容性方面这是多么安全。 如果ASP.NET MVC 4.0明年推出,我们的自定义控制器类(引用ASP.NET MVC 3.0 Controller类)仍然可以在MVC 4.0应用程序中运行吗?
有没有办法以某种方式扩展Controller
而不依赖于特定的MVC版本?
答案 0 :(得分:1)
问题是从“Controller”类继承,首先需要添加对特定版本的Sytem.Web.Mvc的引用。
每个版本的ASP.NET MVC都有自己的DLL。您将无法在MVC 4项目中使用为ASP.NET MVC3设计的客户DLL。
现在,你可以创建一个来自Controller的inheirts并将它包含在你的ASP.NET MVC项目中,然后当你的项目版本发生变化时,将引用“Controller”,但这仅仅是因为你的项目引用了版本
答案 1 :(得分:0)
不完全是您所要求的,但如果您使用的是自定义安全/身份验证机制,则最好覆盖控制对所有控制器的访问权限的AuthorizeAttribute。
还有很多用于自定义身份验证的示例。从自定义控制器派生可能导致潜在的安全问题,有人忘记添加基类 - 将AuthorizeAttribute应用于应用程序启动中的所有控制器是正常的。
有关此方法的详细信息,请参阅here
对于非安全相关的共享方法,您可以在IController上实现这些扩展方法,而不是扩展基类本身,除非您特别需要覆盖控制器基类中的任何内容。