是否可以限制某些.NET功能/类的代码访问?
例如,我有我的MVC CMS的插件模块。我不希望第三方模块能够直接使用File类。我想将它包装在API中,以便模块只能访问其自己指定的“root”文件中的文件。文件夹(沙箱)。否则,该模块将具有对整个服务器的文件访问权限,包括CMS系统文件。
有没有办法限制某些命名空间使用框架的特定功能?或者我应该采取不同的方法吗?
为您提供概述:
CMS名称空间为MyCms
所有模块都使用命名空间MyCms.Module.xxxxx
模块只是标准的MVC结构,它们被带入名称主MVC命名空间,并且路由被自动设置为将请求路由到模块控制器。
因此,模块可以默认访问ASP.NET框架。我希望能够限制MyCms.Module.xxxxx名称空间能够做某些事情,如果可能的话。
我在这里采取了错误的做法吗?我并不热衷于改变基础设施,但如果我无法从顽皮的模块中妥善保护主CMS基础设施,我可能会被迫使用。
答案 0 :(得分:0)
你要给你的第三方源代码还是只编译一个API dll? 如果是以后,那么设置一个界面,只展示你希望第三方使用的方法,听起来像是对我的回答。 当然,它也很大程度上依赖于代码库的架构师。
或者只是为您的第三方提供指定的文件也可以做到这一点
答案 1 :(得分:0)
是的,.net /公共语言运行库支持一组广泛的权限限制和自定义,您可以放入哪些代码可以执行哪些操作。
This概述了.net 4之前的工作原理
http://msdn.microsoft.com/en-us/library/.aspx
This现在是如何运作的
这个东西有点复杂,我的工作仅限于将其中的一部分用于我必须编写的测试用例,但它的编写是为了提供您所寻求的功能。