Intereting Posts
Как создать пользовательский контент на пользовательской странице из плагина? Как удалить два (связанных) строк wp_postmeta? Используйте wp_redirect, не блокируя другие действия Экспорт портфеля с картинками Добавление «мега-меню» на мой сайт без плагина Как получить частную собственность в родительском классе в расширенный класс? Проблема с несколькими доменами Как я могу искать все плагины для поставщика-разработчика / autoload.php? Обратная хронология почтового листинга Добавление идентификатора пользователя по адресу ссылки ссылки тега <a> Ошибка пользовательской таксономии подкачки с базой CPT в таксономии URL-адрес перезаписи Редактирование интерфейса, панель управления Frontend Отзывчивые образы в WordPress Как тему блоков кода, отформатированных prettify.js, встроенных в WP-Markdown? Добавление класса 'featured' к определенным сообщениям

Как защитить загрузки в многопользовательском режиме, если пользователь не вошел в систему?

Я пытаюсь настроить многопользовательскую интрасеть (используя поддомены), где контент на каждом подсайте доступен только пользователям, зарегистрированным на их соответствующем сайте. Проблема, с которой я сталкиваюсь, заключается в попытке ограничить доступ к загруженным файлам (например, http://example.org/wp-content/uploads/2011/12/dummy.pdf ) только для входа в систему.

Как и как защищать закачки, если пользователь не зашел в систему? , как я могу включить одно из решений, предлагаемых hakre или Frank Bueltge для многоуровневой установки?

Я прочесываю сетку и ответы в Wordress, но не смог найти что-то, что я могу приступить к работе. Связанные ответы:

  • Как сделать загрузку мультимедиа конфиденциальной?

  • Защита загрузок в многопользовательском режиме

Кроме того, я новичок в PHP и все еще изучаю, как WordPress работает под капотом, поэтому подробная информация о том, что мне нужно делать, и что будет там, где будет очень цениться.

Благодаря!

Хороший вопрос!

Понюхание вокруг этого немного, это, кажется, работает (дальнейшие тесты и более квалифицированный взгляд очень приветствуются :). Протестировано только при установке локального хоста с субдоменами. Нет сопоставления доменов.

Измените следующее правило .htaccess rewrite:

 # 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 увеличивает время загрузки и потребление памяти. Читайте где-нибудь, что это может быть в десять раз больше (!?).

Интересные обсуждения в списке wp-edu (ничего не нашли в wp-хакерах):