0

我有提供给用户的视频文件(mp4,因为我希望人们能够在 ipad 等上查看它们)。但是,其中一些视频仅对拥有一定数量用户点的用户可用。我有这样的工作,如果用户没有足够的用户点,他们就无法查看节点。所有用户都有相同的角色(视频查看者),问题是有足够用户点的人可以查看节点,获取视频的 url,然后将其提供给具有视频查看者角色但没有'没有足够的用户积分然后那个人可以直接下载那个mp4。

如果用户无权访问节点或以某种方式隐藏文件的路径,则只是寻找一种方法来限制对 mp4 文件的访问。我将 mp4 存储在私有文件系统中,但这并没有解决问题,因为用户具有相同的角色。

我有这个(http://www.ioncube.com/html_encoder.php)在我的网站空间(非drupal页面)的静态页面上工作,但无法在我的drupal设置中工作。当我在我的节点中包含 php 代码以包含 php 文件时,它只会给我一个空白页。

非常感谢

4

1 回答 1

1

Drupal 文档还没有对此我说的不多。

http://drupal.org/documentation/modules/file#access

管理文件位置和访问

创建文件字段时,您可以指定站点文件系统的子目录,用于存储此内容类型的上传文件。站点的文件系统路径在文件系统页面(管理 > 配置 > 媒体:文件系统)上定义。

您还可以指定文件是存储在公共目录中还是私有文件存储区域中。公共目录下的文件可以直接通过web服务器访问;当列出公共文件时,将使用文件的直接链接,任何知道文件 URL 的人都可以下载该文件。私有目录中的文件不能直接通过 Web 服务器访问;当列出私有文件时,链接是 Drupal 路径请求。这增加了服务器加载和下载时间,因为 Drupal 必须解析每个文件下载请求的路径,但允许访问限制。

公共文件的最佳做法是将它们存储在多站点目录中,例如:sites/default/files

为您的文件安全地添加私有目录的默认方法是使用您的 Web 服务器无法直接访问但 Drupal 可以访问的目录。理想情况下,该目录应位于 Drupal 根文件夹之外。

为文件添加私有目录的简单方法是在公共目录下创建一个子目录,例如:sites/default/files/private

当您在 admin/config/media/file-system 中指定私有目录时,它会自动创建子目录并创建一个简单的 .htaccess 文件,并拒绝所有。这会阻止 Apache 从此目录提供文件。确保通过将文件添加到该目录并验证您不能直接浏览该目录来对此进行测试。如果这不起作用,任何可以猜到 URL 的人都可以访问此目录中的所有文件!请注意,非 Apache Web 服务器可能需要额外的配置来保护私有文件目录。

访问私人文件

配置后,无法通过直接链接访问存储在私有目录中的文件;但是,如果 Drupal 构造了一个指向该文件的链接,那么任何可以看到该链接的人都可以访问该文件。

例如:您创建了一个新的内容类型,其中包含一个文件字段,该字段将文件存储在您站点的私有文件目录中。接下来,您从这个新的内容类型创建一个节点并附加两个新文件。当节点发布时,两个附加文件的链接都是可见的,任何可以查看该节点的人都可以下载这些文件。现在,如果您取消发布该节点,即使您使用指向在发布该节点时有效的文件的直接链接,所有附加文件也将无法下载。

重新发布节点,并禁用其中一个文件的“显示”复选框。保存节点。现在,一个文件可供公共下载访问,而另一个文件不可访问——即使您拥有未列出的文件的直接 URL,您也无法下载该文件。

为了更精细地控制谁可以查看/下载附件,您将需要一个额外的访问控制模块。您可以自己编写模块,或使用贡献的模块,例如Content Access

于 2012-08-25T19:21:57.193 回答