Private pdf files

时间:2016-04-05 作者:user1443216

我想只允许登录用户访问一些私人pdf文件。

我的htaccess中有:

RewriteCond %{REQUEST_FILENAME} ^.*(pdf)$
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . - [R=403,L]
但我想限制仅访问文档。名称为的pdf以“private\\”开头。

示例:private\\u document1。pdf和private\\u文档2。pdf仅允许登录用户访问。

拜托,有什么想法吗?

1 个回复
SO网友:incredimike

您的方法不提供安全性。我可以手工制作一个名为“wordpress\\u logged\\u in”(包含任意值)的cookie,并可以访问您的PDF文件。

您可能需要重新考虑将PHP脚本放在文件和用户之间的解决方案。

e、 g。

用户单击下载按钮,PHP脚本处理获取文档的操作。如果用户经过身份验证,PHP脚本将通过PDF文件发送请查看此答案,了解有关实施的更多详细信息:https://stackoverflow.com/questions/10834196/secure-files-for-download

如果这是一种你想探索的方法,我将更新我的答案,告诉你如何将这种方法与WordPress连接起来。

编辑:我将为概念验证提供一个“黑客”解决方案。实际上,我可能会使用WP-AJAX操作来实现该方法。

<?php

/*
 * Assume WordPress lives in /var/www/mysite/
 * This script\'s path is /var/www/mysite/downloader.php
 *
 * To download a file, link the user to:
 *   <a href="/downloader.php">Download file</a>
 *
 * You can mask this downloader using htaccess rewrites
 */

// Load wordpress
require_once(\'/path/to/wordpress/wp-load.php\');

if (!is_user_logged_in()) die(\'no access\');

// specify a file path
$file = \'/path/to/file/outside/www/secret.pdf\';

// or load the file from some other location (e.g. WP Media)


header(\'Content-Description: File Transfer\');
header(\'Content-Type: application/octet-stream\');
header(\'Content-Disposition: attachment; filename=\' . basename($file));
header(\'Content-Transfer-Encoding: binary\');
header(\'Expires: 0\');
header(\'Cache-Control: must-revalidate, post-check=0, pre-check=0\');
header(\'Pragma: public\');
header(\'Content-Length: \' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;

// Don\'t use closing PHP brackets.

相关推荐

如何在Gutenberg中将帖子的默认可见性设置为“Private”?

当用户第一次创建帖子时,我试图将帖子的默认可见性设置为“Private”。当他们准备好或文章被审阅后,他们应该能够从侧栏下拉列表中手动选择“已发布”。我的目标是确保在用户未准备好或忘记选择“private”时,帖子不会意外发布。我找不到任何适用于古腾堡的代码。我研究的大多数都是过时的,而且是为经典编辑器设计的。如果可能的话,我宁愿不使用插件。非常感谢您的帮助。提前感谢!