如果用户未登录,如何保护多站点中的上传?

时间:2012-08-28 作者:acdesigns

我正在尝试建立一个多站点intranet(使用子域),其中每个子站点上的内容只有登录到各自站点的用户才能访问。我遇到的问题是试图限制对上载文件的访问(例如。http://example.org/wp-content/uploads/2011/12/dummy.pdf) 仅限于登录用户。

类似How to Protect Uploads, if User is not Logged In?, 我将如何启用hakre或Frank Bueltge提出的多站点安装解决方案之一?

我一直在搜索网络和Wordress的答案,但还没有找到我可以用来工作的东西。相关答案如下:

此外,我是PHP新手,仍在学习WordPress如何在引擎盖下工作,因此非常感谢您提供有关我需要做什么以及去哪里的详细信息。

谢谢

1 个回复
SO网友:brasofilo

问得好!

稍微想想,这似乎是可行的(更进一步的测试和更合格的外观非常受欢迎:)。仅在带有子域的localhost开发安装中测试。没有域映射。

更改以下内容.htaccess 重写规则:

# uploaded files
# RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
RewriteRule ^files/(.+) dl-files.php?file=$1 [L]
复制/wp-includes/ms-files.php 然后把它放在根上dl-files.php.

使残废SHORTINIT, 修改wp-load.php 路径并添加current_user_can() 从一开始就检查,因此它变成:

<?php
/**
 * Modified Multisite upload handler.
 *
 * @since 3.0.0
 *
 * @package WordPress
 * @subpackage Multisite
 */

//define( \'SHORTINIT\', true );
require_once( \'wp-load.php\' );

if( !is_multisite() )
    die( \'Multisite support not enabled\' );

if( !current_user_can( \'subscriber\' ) ) {
    status_header( 403 );
    die( \'403 &#8212; Forbidden.\' );
}

ms_file_constants();

/* ... rest of the original file ... */
请注意,删除SHORTINIT 增加加载时间和内存消耗。阅读somewhere 可能会增加十倍(!?)。

wp edu列表中的有趣讨论(在wp黑客中未发现任何内容):

结束

相关推荐

上传的图像不在/Uploads文件夹中

网站存在巨大问题。我更新了主题以使用帖子缩略图(这是多么旧),然后在尝试上载图像以用作特色缩略图时:图像会处理/压缩,但URL会导致404。网站没有任何异常。htaccess。实际上没有wp content/uploads目录,所以我做了一个,chmod权限是0755,所以这不应该是问题所在。我将“媒体设置”文件夹重置为默认文件夹,但该文件夹中不会出现任何图像。编辑:将上载文件夹更改为0777权限似乎可以解决此问题。这样保留权限安全吗?