0

是否可以限制某些 .NET 功能/类的代码访问?

例如,我的 MVC CMS 有插件模块。我不希望第 3 方模块能够直接使用 File 类。我想将它包装在一个 API 中,以便模块只能访问它自己指定的“根”文件夹(沙箱)中的文件。否则,模块将拥有对整个服务器的文件访问权限,包括 CMS 系统文件。

有没有办法限制某些命名空间使用框架的特定功能?还是我应该采取不同的方法?

给你一个概述:

CMS 命名空间是MyCms

所有模块都采用命名空间MyCms.Module.xxxxx

模块只是标准 MVC 结构,它们被带入名称 main MVC 命名空间,并且自动设置路由以将请求路由到模块控制器。

因此,这些模块具有对 ASP.NET 框架的默认访问权限。如果可能的话,我希望能够限制 MyCms.Module.xxxxx 命名空间能够做某些事情。

我在这里采取了错误的方法吗?老实说,我并不热衷于更改基础架构,但如果我不能正确保护主要 CMS 基础架构免受顽皮模块的影响,我可能会被迫这样做。

4

2 回答 2

0

你是要提供你的第 3 方源代码还是只提供一个已编译的 API dll?如果是以后,那么设置一个界面并只公开您希望您的第 3 方使用的方法,这听起来像是对我的回答。当然,它也严重依赖于代码库的架构师。

或者简单地向您的第 3 方提供指定的文件也可以解决问题

于 2012-05-09T23:27:23.890 回答
0

是的,.net/ 公共语言运行时支持广泛的权限限制和自定义,您可以针对哪些代码可以执行哪些操作进行设置。

是 .net 4 之前它如何工作的概述

http://msdn.microsoft.com/en-us/library/.aspx

就是它现在的工作方式

这东西有点复杂,我使用它的工作仅限于为我必须编写的测试用例传递其中的一些,但它的编写是为了提供您所寻求的功能。

于 2012-05-10T21:17:45.590 回答