2013-06-04 31 views
1

我在DNN中创建了一个模块,它有一个子文件夹,其中包含模块使用的几个文件,但我不想让公众访问该文件。作为DNN的新手,我原本以为只需添加一个Web.config并在授权部分设置拒绝用户=“*”即可。现在看来,尽管DNN拦截了所有请求并忽略了Web.config,因为此设置似乎没有效果。DotNetNuke安全模块文件夹

用户当前只能通过猜测文件名并导航到(http://mysite.com/DesktopModules/mymodule/restricted_files/guessedfile.pdf)来访问这些文件。我怎样才能防止这种情况发生?

回答

2

DotNetNuke允许您在文件系统中拥有different providers for folders。如果您使用这些提供程序(而不是直接与文件系统交互),那么您可以确保DNN控制文件夹中文件的权限。

内置于DNN中的是三种提供程序:标准,安全和数据库。如果您使用安全或数据库提供程序创建文件夹,那么DNN将确保您无法通过猜测路径来获取文件(通过将.resources附加到文件名,哪个IIS不会提供服务,或者通过将它在数据库中)。然后,您可以为文件夹分配权限(通过管理菜单中的文件管理器页面),以指示谁可以访问这些文件(除非您使用主机文件系统,否则网站管理员将始终能够访问这些文件) 。

但是,这些文件夹提供程序仅适用于网站中的Portals目录。建议您将内容文件存储在那里,而不是在DesktopModules

+0

感谢您的协助。这些文件将随模块分发。您如何指导安装程序将这些文件放入Portals下的安全文件系统文件夹中? – Blazanor

+0

您的模块的业务控制器类可以实现['IPortable'](http://www.dotnetnuke.com/Resources/Wiki/Page/IUpgradeable.aspx)在安装后运行代码。您也可以在清单中通过''元素指示文件应该结束于特定的文件夹中,例如, Portals/_default/MyFiles(请参阅[清单的File组件上的wiki页面](http://www.dotnetnuke.com/Resources/Wiki/Page/Manifest-File-Component.aspx)) – bdukes